换上新的SSL(二):Let’s Encrypt来了

Let’s Encrypt 是一个被 Google 等大佬支持的免费 SSL 签发服务,并且是开源的。

网上介绍安装的有很多,比如 这里 ,我也就不多陈述了。
当然对于很多小白来说这些都太复杂,那么如何方便的签发证书呢。
毕竟 Let’s Encrypt 是开源的,所以也涌现了一批基于 Let’s Encrypt 的可视化签发工具。
这里以著名的 SSL FOR FREE 为例。在页面输入想要加密的域名地址(注意:不支持泛域名,每次一起签发最好不超过三个,不然验证容易炸),回车,然后开始验证。SSL FOR FREE 提供 FTP、http、DNS 三种验证,大家任选其一即可。
完成后会要求你下载,这时看到有三个文件:

ca_bundle.crt
certificate.crt
private.key

到这里基本就结束了。
但是我的服务器是 NGINX,在实际使用中部分浏览器不信任该证书,像 IE 浏览器和大部分手机浏览器。那么到底哪里出问题了呢?
啊哈,是中间证书。
证书签发者为了安全,把根证书和根私匙放在断网的环境里,类似皇帝。然后放出一堆中间证书和中间私匙到在线前台负责签发,这就是大臣。我们得到的,就是中间证书签发的子证书,也就是老百姓。
但是浏览器就像外国使节,只认识皇帝,根本不认识你这个老百姓和你说的官员是谁的子民。
对的,浏览器只知道根证书,不认识你声称的那个中间证书。
怎么办?自然是把官员的身份也告诉使节。
于是就成了这样:浏览器握手——提交子证书——浏览器不认识——子证书宣称由中间证书签发并提交中间证书——浏览器不认识——中检证书宣称由根证书签发——浏览器认识,一查,嗯是真的!
那怎么提交中间证书呢?
用 notepad++打开 certificate.crt 和 ca_bundle.crt。
然后复制 ca_bundle.crt 内的所有内容到 certificate.crt 的下一行,类似这样:

—–BEGIN CERTIFICATE—–
safgadgeadgdsgasdhb
—–END CERTIFICATE—–
—–BEGIN CERTIFICATE—–
gsdgbsgshs
—–END CERTIFICATE—–

大功告成,另存为(千万不要保存,万一错了)balabala.crt。这个就是 nginx 需要的。

《换上新的SSL(二):Let’s Encrypt来了》上有2条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据