前言
2017 年可以说是 https 快速发展的一年。大量的网站都从 http 协议迁移到了 https 协议。https 是构建在 SSL/TLS 基础上的 http协议,相对 http 来说,https 主要提供了 http 传输过程中的数据安全机制。
在原来的 http 协议中,传输的内容都是明文传递的。在传输的任何一个网络节点上,路由器、交换机、运营商核心交换机等,都能够很简单的嗅探到传输的内容。不仅用户的隐私安全完全无法保证,更严重的是还非常容易被人在这些节点上进行攻击和劫持,在返回的 http 内容中篡改返回结果。例如在返回的结果中插入广告,在返回的内容中恶意代码等等。
要让自己的网站和 http 服务升级到 https ,你需要为自己的网站申请一张 https 证书。公网可信的 https 证书由 CA 厂商签发。
证书的类型根据认证的级别可以分为以下三种
- 域名认证(Domain Validation):最低级别认证,可以确认申请人拥有这个域名。对于这种证书,浏览器会在地址栏显示一把锁。
- 公司认证(Company Validation):确认域名所有人是哪一家公司,证书里面会包含公司信息。
- 扩展认证(Extended Validation):最高级别的认证,浏览器地址栏会显示公司名。
根据覆盖的范围又可以分为以下三种
- 单域名证书:只能用于单一域名,foo.com 的证书不能用于www.foo.com
- 通配符证书:可以用于某个域名及其所有一级子域名,比如*.foo.com的证书可以用于foo.com,也可以用于www.foo.com
- 多域名证书:可以用于多个域名,比如foo.com和bar.com
https 证书也不是免费的。认证级别越高,覆盖范围越广的 https 证书也就越贵。
幸好为了推广 https 证书,国内的云服务厂商大多都提供了免费的 https 证书签发服务。当然是认证级别最低,覆盖范围最小的那种了。
本文主要描述如何通过阿里云申请和配置一个 https 证书
阿里云申请 https 证书
首先需要有一个阿里云账号。然后登陆到阿里云的网站,在控制台中找到 CA证书服务。如下图所示:

证书选择
进入 CA 证书服务页面后,点击“购买证书”按钮,进入购买页面。选择如下的的免费证书。这里阿里云比较鸡贼,免费证书选项不是那么容易出来。要在在界面中选择保护类型“1个域名”,同时选择品牌“Symantec”,然后再在证书类型中才会出现“免费型DV SSL”选项。这个两个条件都需要具备。

点击“立即购买”并且支付后,会在 CA 证书服务页面生成一个新订单。然后点击“补全”按钮补充信息。

指定域名
首先要填写为哪个域名申请的证书。这里必须指定一个具体的二级域名,不支持通配符。

填写个人信息
这里填写联系人信息和域名验证类型。我这里选择的是 DSN 验证类型。

域名验证
补全这些信息后,就等待系统自动审核通过。点击订单“详情按钮”可以看到证书验证需要在申请证书域名的解析中增加一条图中的 TXT 类型的解析记录来进行域名的验证。

注意一下,如果你申请证书的域名在阿里云的这个账户下,那么在“填写个人信息”步骤中,勾选复选框“证书绑定的域名在【阿里云的云解析】产品中,授权系统自动添加一条记录以完成域名授权验证”,系统将会自动增加如下的域名解析记录。否则需要手工增加这条域名解析记录

等待一段时间后,订单状态会显示为签发成功,表示证书已经签发成功了。

证书配置
证书签发成功后,需要在 http web 服务器中配置证书。在上图中点击“下载” 按钮后,阿里云提供了下面几种 web服务器的配置样例

其中 nginx 配置的样例如下所示
server {
listen 443;
server_name localhost;
ssl on;
root html;
index index.html index.htm;
ssl_certificate cert/214504606840473.pem;
ssl_certificate_key cert/214504606840473.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
访问样例
在 web 服务器上配置成功后,访问该域名的网页,会显示出一个绿色的锁的标志,这标识你的网站已经在 https 证书的保护下了。

这个是通过 chrome 访问的样子。其他浏览器可能不太一样。
网友评论