个人博客免费申请并安装SSL证书

[toc]

SSL 证书是由受信任的数字证书颁发机构 CA,在验证服务器身份后颁发,且具有服务器身份验证和数据传输加密功能。简单说就是让你网站通过 HTTPS 加密传输协议访问的一个必要文件。SSL证书根据验证级别,分为三种类型:

  • 域名型SSL证书,简称DVSSL;
  • 企业型SSL证书,简称OVSSL;
  • 增强型SSL证书,简称EVSSL。

对于个人站点来讲,一般使用DVSSL就够了。本篇文章主要介绍从www.sslforfree.com 上获取免费证书,并安装到自己刚建立的WordPress博客上来。

一、申请SSL证书

申请SSL证书之前,必须要有自己已经绑定域名的服务器。在获取有效证书之前,www.sslforfree.com 会验证申请者是否具有域名和服务器的归属权。验证时需要先登录网站主页:

1

在文本框内输入域名,比如对于本博客来讲,直接输入luomuxiaoxiao.com。然后,点击右侧Create Free SSL Certificate。接下来会出现下图:

2

图中依次点击Manual VerificationRetry Manual Verification。然后,就能看到下面的验证画面了:

3

按照图中提示做以下操作:
1. 点击1中出现的两个文件Download File #1Download File #2,将其下载下来;
2. 在服务器上的网站根目录(比如我的网站根目录是在/var/www/html)下建立.well-known/acme-challenge文件夹;
3. 将下载下来的文件上传至上面新建的文件夹里;
4. 点击5中出现的链接,如果打开的页面显示的和这两个文件内容一致的话,验证OK;
5. 然后点击下方的Download SSL Certificate,会跳转到以下页面:

4

这里你可以输入邮箱以创建该网站的账号密码,这样证书到期之后,网站会发邮件提示你更新证书。然后点击最下方的Download All SSL Certificate Files,下载一个名为sslforfree.zip的压缩包,里面即是ssl的证书和key文件。

二、安装证书

2.1 重命名证书

将上述下载下来的sslforfree.zip上传到服务器,并解压,我们应该得到三个文件为了文件:ca_bundle.crtcertificate.crtprivate.key。为了便于识别,我们将证书文件certificate.crt命名为your_website.crt(比如我的为luomuxiaoxiao_com.crt)。然后,将ca_bundle.crtyour_website.crt复制到/etc/ssl目录下;将其中的private.key复制到到/etc/ssl/private下。相应的命令为(假设我的三个证书文件存放在~/Downloads/luomuxiaoxiao.com目录下):

sudo cp ~/Downloads/luomuxiaoxiao.com/ca_bundle.crt ~/Downloads/luomuxiaoxiao.com/luomuxiaoxiao_com.crt /etc/ssl/

sudo cp ~/Downloads/luomuxiaoxiao.com/private.key  /etc/ssl/private

注意:往/etc/ssl/private移动private.key时,有可能会移动失败,提示没有足够的权限。因为/etc/ssl/private默认的权限是drwx------。这时先执行命令sudo chmod 755 /etc/ssl/private,再复制应该就OK了。

2.2 定位当前网站的apache配置文件

要想让apache服务器运行在加密的链接上,必须确保SSL模式已经开启。如果未开启的话,可以使用下面的命令使能:

sudo a2enmod ssl

在开始安装SSL之前,先使用下面的命令定位Apache的配置文件:

apachectl -S

应该会得到下图:

5

图中显示的/etc/apache2/site-enabled/000-default.conf就是配置文件及其路径。

2.3 修改配置文件

使用下面的命令来复制一个配置文件:

cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/your_website-ssl.conf

注意:
1. 这里复制的路径是/etc/apache2/sites-available而不是/etc/apache2/site-enabled/。因为/etc/apache2/sites-available下的文件是真正的文件,而/etc/apache2/site-enabled/下面的只是在使能这个配置之后,创建的一个软链接而已。
2. 为了便于识别,请将your_website-ssl.conf里面的your_website修改为你博客实际的域名(如我的为luomuxiaoxiao_com-ssl.conf

按照下面的说明修改/etc/apache2/sites-available/your_website-ssl.conf文件里的内容:

<VirtualHost *:443>         # 将原来的80端口改为ssl默认端口443
ServerName example.com      # 将修改example为你的网站域名
DocumentRoot /var/www/html  # 将修改/var/www/html为服务器上网站的真实路径

SSLEngine on 
SSLCertificateFile /etc/ssl/your_website.crt    # 将your_website.crt修改为/etc/ssl下重命名的证书文件
SSLCertificateKeyFile /etc/ssl/private/private.key
SSLCertificateChainFile /etc/ssl/ca_bundle.crt
</VirtualHost>

2.4 使能配置文件

执行以下命令使能配置文件:

sudo a2ensite your_website-ssl.conf     # 将命令中的your_website替换成2.3中复制的配置文件

重启apache:

sudo systemctl restart apache2.service

2.5 确认效果

在地址栏中输入https://your_website.com,这时应该就能看到浏览器地址栏前面的小锁,表示已经使能ssl成功了。

6

三、默认使能ssl配置

在地址栏中直接输入your_website.com,这时我们看到的依然是没有使能SSL页面。这是因为,直接输入域名或者IP,依然走的是默认端口,即80端口。而不是我们配置的SSL默认443端口。要想默认走SSL,只需要将原来的80端口重定向到SSL端口即可。修改方法如下:
打开/etc/apache2/sites-available/000-default.conf文件,添加下面两行:

ServerName www.yourdomain.com 
Redirect permanent / https://www.yourdomain.com/ 

请将上述www.yourdomain.com替换成博客的真实域名即可。然后,在地址栏中直接输入your_website.com,这时应该就能看到浏览器地址栏前面的小锁,表示已经成功设置为默认重定向到443端口了。

四、参考文档

  1. nginx安装SSL证书,搭建https网站
  2. Installing a SSL certificate on Apache
  3. Apache Redirect to HTTPS

发表回复

您的电子邮箱地址不会被公开。