使用 SSL 加密早已不是什么新鲜事,个大网站也早已纷纷加入它的怀抱。为了推进更安全的网络环境,Mozilla 和 Google 都陆续宣布将把所有 HTTP 网站标记为不安全,意味着 SSL 已是大势所趋。

早期 SSL证书基本以收费为主,且过程有点复杂。但现在个大云主机商,也都推出证书产品,想入这坑已是十分便捷。

SSL/TSL

SSL(Secure Sockets Layer 安全套接字层),它是一项标准技术,用于在客户端与服务器之间进行加密通信,可确保互联网连接安全,防止网络犯罪分子读取和修改任何传输信息,包括个人资料。

TSL(Transport Layer Security 传输层安全),是 SSL 的继承协议,它建立在 SSL 3.0 协议规范之上,是更为安全的升级版 SSL。由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL。

如果网站上存在 SSL,用户可以看到网站地址以 https:// 开头,而不是以 http:// 开头。根据证书为企业提供的验证等级,安全连接会用挂锁图标或绿色的地址栏标志表示。

HTTPS

HTTPS = HTTP 协议(进行通信) + SSL/TLS 协议(加密数据包),增加的 S 代表 Secure(安全)

安装过程

1. 直接在阿里云-证书服务购买证书。

默认进入时,并不会直接看到免费SSL证书选项。基本配置改为,保护类型:1个域名、选择品牌:Symantec证书类型中才会出现免费型DV SSL的选项。

2. 购买后在 管理控制台-安全(云盾)-CA证书服务内找到已购买证书,并补全相关信息。

填写域名信息:

仅支持绑定一个一级域名或者子域名,例如 bluesdream.com、www.bluesdream.com、ssl.bluesdream.com分别为一个域名。

填写个人信息,并进行域名验证:

如果你使用的是阿里云的DNS解析,可以在域名验证类型中打上勾,系统会自动添加一条解析记录。
使用其他平台的 DNS 解析,需手动添加一条 TXT 记录,或通过文件进行验证。

3. 等待审核。

  • 通常不会很久,我只等十几分钟,证书状态便显示为已签发

4. 配置 NIGINX 服务器。

  • 在证书信息后面点击下载链接,并根据自己的服务器类型选择下载证书文件,解压得到 *.key*.pem两个问文件。
  • 在 NGINX 的安装目录/etc/nginx/下创建 cert目录,并且将下载的全部文件拷贝到cert目录中。
  • 修改 NGINX 配置文件 /etc/nginx/nginx.conf(如创建的目录名不为 certssl_certificatessl_certificate_key,对应的路径也需要修改)。
  • HTTP 默认使用 80端口HTTPS使用443端口,还需在控制台安全组规则内打开对应端口。

5. 重启 NIGINX。

  • 重启完成后,直接通过 https://www.bluesdream.com/ 访问网站。如果配置正确,可以顺利打开,并且地址栏前面会显示出绿锁的图标。

后续操作

由于网站首页是静态页形式,一点问题都没,但进入博客便发现不能通过 SSL 验证,地址栏还是显示警示图标。经过一番检查,发现博客存在着不少非 HTTPS 协议的域名所引起,因此又陆续优化了部分内容。

  • 虾米播播音乐插件不支持 HTTPS,会导致浏览器安全监测失败,使用率也不高因此删除。
  • 把 CNZZ 统计代码也改成 HTTPS 地址。
  • 调整早期的一些静态 HTML 页面资源。
  • 由于免费证书只能绑定一个域名,而图片和文件资源都存储在又拍云,并绑定的二级域名。因此又单独申请了个 SSL 证书。

再次打开博客,浏览器验证通过。

开启全站 HTTPS

修改 NGINX 配置,设置 301跳转,把 HTTP 请求重定向到 HTTPS 上。

server {
  listen       80;
  server_name  www.bluesdream.com;
  return 301   https://$host$request_uri;
}

经过3天的等待,现在通过百度、谷歌等搜索我的网站名称:蓝色梦想,结果已基本都显示为 HTTPS 形式。收录数量略有小幅变动,但在正常范围之内并无太大影响。

参考资料:
什么是 SSL、TLS 和 HTTPS?