使用 SSL 证书保护网站的访问
[update] 本文于 2017-12-29 进行过一次修订
我以前没有接触过 SSL ,导致签发人生中第一张 SSL 证书的时候,Private Key 是通过第三方生成的,理论上来说这张证书基本上是废了,因为你家门的钥匙都是别人帮你配的,谁知道他有没有留一个副本!所以 Private Key 一定得自己生成。
以下的内容,随随便便搜索引擎便能搜索到更加详细的,我在这里也就不累赘了,大概的说一下一些简单的东西。
SSL 证书有什么用
- SSL 是一个加密协议,它能保证你的数据在传输的过程中不被截取
- 它能保证你的网站的内容不被篡改,比如国内的各宽带运营商,强制在你的网站上加 Javascript 代码,投放广告
- iOS APP 和 小程序 强制要求使用 HTTPS 传输内容
SSL 证书价格怎么样
Let’s Encrypt 已提供免费 SSL 证书签发服务,感谢这个组织推动了整个互联网 HTTPS 化。目前,签发证书的成本其实还是蛮低的。如果你是个人使用,不防试试以下的 CA 签发的证书,如果你是商用,我觉得你应该比我更清楚应该去哪里签。
- Let’s Encrypt 免费签单域名/多域名证书,有效期较短,3个月。
- FreeSSL 一个免费提供证书申请服务的第三方网站
- Comodo PositiveSSL 我在 namecheap.com 签的单域名证书,50多RMB。
- 各大云服务运营商都提供了免费的 SSL 签发服务
SSL 证书如何申请
在哪家 CA 申请证书都是差不多的流程。你需要准备的是你申请域名的 Private Key 和通过 Private Key 生成的 CSR (CERTIFICATE REQUEST),然后将 CSR 给 CA ,CA 域名审核通过后,将会给你一个 CRT SSL 证书。CSR 起到中间传递的作用,最后部署的时候,真正有用的只有 Private Key 和 CRT
如果你觉得通过命令行生成 Private Key 和 CSR 麻烦的话,我这里推荐一个在线生成的网站,这个网站纯前端生成,无后端服务器,理论上是安全的。
[!!重点!!] 记得生成之后,要点击下载 ZIP 包,里面含有 Private Key ,把它丢了就没救了。
SSL 证书如何部署
我觉得部署倒是挺简单的,把 私钥 和 域名证书 放在服务器上,配置 Nginx Conf ,reload 完事。
host.conf 相关配置
1 | server |
把 HTTP 强制跳转至 HTTPS
1 | server |
SSL证书的一些小问题
- Android 浏览器或某些 PC 浏览器上显示证书不受信任。你需要找到你所申请 CA 的证书及根证书等证书链,放在你的证书
ssl.crt
后面就OK了。证书链补全工具 - 浏览器上面没有显示绿标,而且灰色小黄标。那是因为你的页面含有 HTTP 协议的元素,全部使用 HTTPS ,就有小绿标了
最后你可以在 SSL Labs 检测你的域名的 SSL 评分已经在各终端的信任情况。