[toc]
SSL 证书是由受信任的数字证书颁发机构 CA,在验证服务器身份后颁发,且具有服务器身份验证和数据传输加密功能。简单说就是让你网站通过 HTTPS 加密传输协议访问的一个必要文件。SSL证书根据验证级别,分为三种类型:
- 域名型SSL证书,简称DVSSL;
- 企业型SSL证书,简称OVSSL;
- 增强型SSL证书,简称EVSSL。
对于个人站点来讲,一般使用DVSSL就够了。本篇文章主要介绍从www.sslforfree.com 上获取免费证书,并安装到自己刚建立的WordPress博客上来。
一、申请SSL证书
申请SSL证书之前,必须要有自己已经绑定域名的服务器。在获取有效证书之前,www.sslforfree.com 会验证申请者是否具有域名和服务器的归属权。验证时需要先登录网站主页:
在文本框内输入域名,比如对于本博客来讲,直接输入luomuxiaoxiao.com
。然后,点击右侧Create Free SSL Certificate
。接下来会出现下图:
图中依次点击Manual Verification
、Retry Manual Verification
。然后,就能看到下面的验证画面了:
按照图中提示做以下操作:
1. 点击1
中出现的两个文件Download File #1
和Download File #2
,将其下载下来;
2. 在服务器上的网站根目录(比如我的网站根目录是在/var/www/html
)下建立.well-known/acme-challenge
文件夹;
3. 将下载下来的文件上传至上面新建的文件夹里;
4. 点击5
中出现的链接,如果打开的页面显示的和这两个文件内容一致的话,验证OK;
5. 然后点击下方的Download SSL Certificate
,会跳转到以下页面:
这里你可以输入邮箱以创建该网站的账号密码,这样证书到期之后,网站会发邮件提示你更新证书。然后点击最下方的Download All SSL Certificate Files
,下载一个名为sslforfree.zip
的压缩包,里面即是ssl的证书和key文件。
二、安装证书
2.1 重命名证书
将上述下载下来的sslforfree.zip
上传到服务器,并解压,我们应该得到三个文件为了文件:ca_bundle.crt
、certificate.crt
和private.key
。为了便于识别,我们将证书文件certificate.crt
命名为your_website.crt
(比如我的为luomuxiaoxiao_com.crt
)。然后,将ca_bundle.crt
、your_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
应该会得到下图:
图中显示的/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成功了。
三、默认使能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端口了。