换上新的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需要的。

有 2 条评论, 不如再加一个评论?

留下你的评论呗...

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