
本文所说的免费SSL证书,指的是DV SSL证书。什么是DV SSL证书?
DV SSL即Domain Validation SSL或超快SSL,只验证域名所有权, 10分钟颁发,保证了网站的机密信息从用户浏览器到服务器之间的传输是高强度加密传输的,是不会被非法窃取和非法篡改的,但由于只验证域名,此证书仅起到加密传输信息的作用,并不能证明网站的真实身份。
SSL证书有DV、OV、EV三种,DV证书相对来说级别最低,但由于其申请流程简单、签发时间短、完全免费,并且可以起到加密传输的作用,受到很多用户青睐。
很多时候,我们也会自制SSL证书,以达到加密传输的作用,由于不是认证机构所颁发,浏览器会提示不安全,如下图。
虽然可以忽略继续访问,但给用户带来极其不佳的体验。


目前,很多域名服务商都提供免费DV SSL证书的申请,申请流程、步骤大致相同。
本文以阿里云为例,详细讲述免费DV SSL证书的申请,以及如何开启Apache2的SSL模块,配置网站,以https协议访问网站,达到数据传输加密的目的。

我们以域名test-ssl.himstudy.net为测试对象,已在Apache2中配置了对应的http网站,并能成功访问。
如下图所示,由于是通过默认的http协议访问,浏览器标识为“不安全”。

证书的申请步骤及操作如下:
登录阿里云,进入【安全(云盾)】下的【SSL 证书(应用安全)】

点击【购买证书】,选择“免费型DV SSL” ,请注意,配置费用应为0.00(不产生费用)。


确认订单信息,点击【去支付】 ,由于我们申请的是免费DV SSL证书,并不产生费用,直接显示“支付成功”


点击【证书控制台】返回。此时,我们将看到在“未签发”一栏下显示刚申请的证书,颁发机构为赛门铁克公司,大名鼎鼎的安全软件公司。

点击操作一列下的【申请】,填入要绑定的域名以及相关信息。在“域名验证方式”一栏中,如果域名是在阿里云申请的,可以直接选择“自动DNS验证”,如果域名是在其它服务商申请的,可以选择“手工DNS验证”或“文件验证”。
在这里我们选择操作稍微复杂的“文件验证”,复杂的都能操作了,前面两个方式就不是事了。

点击下一步提交后,将出现如下提示。

下载验证文件,然后在test-ssl.himstudy.net对应的网站根目录下建立.well-known/pki-validation目录,注意well-known前面的英文句号,务必加上。

然后把验证文件fileauth.txt上到pki-validation目录下,我这里下载的是一个ZIP压缩文件,先把fileauth.txt解压出来再上传。
上传完毕后点击【验证】按键,显示“验证成功”,然后再点击【提交审核】。

静候SSL证书的签发。

大约10分钟左右收到申请成功的邮件及手机短信,刷新面页,显示证书已签发。
至此,已成功申请免费的DV SSL证书,有效期限为1年,在SSL证书到期前可按以上步骤重新申请,下载并直接覆盖服务器上的SSL证书,重启相关WEB服务即可。

上传SSL证书并设置,开启网站的https:
点击下载,出现证书下载的列表,本事例下载Apache的证书。

下载是一个ZIP文件,解压后有三个文件。

由于文件名过于冗长,这里我们更改一下文件名。当然,也可以不修改直接使用。
更改时,请保留chain、public等字眼,以便于识别。

把三个证书文件上传到服务器,目录及存放位置可自行设定,但出于安全起见,不要把SSL证书文件放在网站目录下。本事例将把SSL证书文件存放在/test-ssl目录下。

开启Apache2的SSL模块,然后重启Apache2使其生效。
a2enmod ssl
service apache2 restart
进入/etc/apache2/sites-available目录,在目录下有一个名为default-ssl.conf的文件,是安装apache2时所配备的默认ssl文件,我们以此为样本,拷贝为test-ssl.conf。
cp default-ssl.conf test-ssl.conf
编辑test-ssl.conf,把DocumentRoot指向test-ssl网站的绝对目录,如服务器存在多个网站,建议加上ServerName绑定域名。

文件往下,有两行默认的ssl证书配置项。

修改一下,将其指向我们设置的SSL文件,文件中缺少SSLCertificateChainFile配置项,我们也加上,如下图。
配置项与SSL证书文件的一一对应关系务必要正确,否则https无法正常访问。

启动刚才编辑的网站SSL虚拟主机配置文件,重启Apahce2使其生效。
a2ensite test-ssl.conf
service apache2 restart
浏览器地址栏输入https://test-ssl.himstudy.net,地址栏出现“小绿锁”,表明网站的ssl已正确开启,网站连接安全。


需要注意的是,虽然已成功开启https,但网站的http是同时并存的。
用户在访问网站时,只会在地址栏输入网址,而不会刻意在地址前加上https,这时用户访问的是http,而非https,这样就起不到网站传输加密的作用。
这里可参考本站的《Ubuntu及Apache2下如何301重定向https?》,无论在任何情况下,强制网站转向https,以达到安全传输加密的目的。