随着苹果、微信、微博等都开始要求使用https安全协议,越来越多的站长开始为自己的站点添加证书。Plesk用户通常能很轻松地安装SSL证书,因为Plesk上提供了免费数字证书的插件Let’s Encrypt,以及部分Plesk上可能预装了亚洲诚信发的免费数字证书插件TrustAsiasslTool。但是有用户反馈,使用Let’s Encrypt安装数字证书后,在chrome,IE等浏览器上用https访问正常,但部分版本的火狐,chrome,360浏览器上显示错误,如下图
从火狐的错误提示来看是因为安全等级太低了,火狐主动终止了连接。这里的安全等级主要是指https使用的密钥套件(Cipher Suite)是什么版本,如果产生这个Cipher Suite是火狐不认可的话,连接就会被火狐中断。
通过SSLLabs这个网站可以方便地检测目标网站支持的Cipher Suite。部分截图如下:
以及这个网站所做的握手模拟(Handshake Simulation):
在火狐47版本上报错,提示使用了黑名单中的算法——TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
,发现它果然在一份公开的黑名单列表中。TLS 1.2 Cipher Suite Black List:
(列表太长,只罗列部分)
• TLS_ECDH_RSA_WITH_RC4_128_SHA
• TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA
• TLS_ECDH_RSA_WITH_AES_128_CBC_SHA
• TLS_ECDH_RSA_WITH_AES_256_CBC_SHA
• TLS_ECDHE_RSA_WITH_NULL_SHA
• TLS_ECDHE_RSA_WITH_RC4_128_SHA
• TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA
• TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
• TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
• TLS_ECDH_anon_WITH_NULL_SHA
• TLS_ECDH_anon_WITH_RC4_128_SHA
• TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA
• TLS_ECDH_anon_WITH_AES_128_CBC_SHA
• TLS_ECDH_anon_WITH_AES_256_CBC_SHA
• TLS_SRP_SHA_WITH_3DES_EDE_CBC_SHA
解决的方法可以从浏览器端和服务器端两方面考虑,前者可以关闭浏览器对http2的支持
从中我们也知道了Plesk Onyx是默认支持http2的,而火狐也优先选择建立http2的连接
后者可以修改浏览器认可的cipher list(火狐可以使用插件Toggle Cipher Suites)
下面讲更好的修改服务器端的方法。简单说只需要执行下面的命令让测试中的火狐,360浏览器等都访问正常
RedHat/CentOS系统
/usr/local/psa/bin/http2_pref enable
Debian/Ubuntu系统
/opt/psa/bin/http2_pref enable
注意事项:
要求安装了Plesk12.5.30#28及以上版本;
确保你的Nginx正常运行,且版本不低于1.9.14
通过SSLLabs可以看到,这个命令执行前,Cipher Suite顺序:
执行后,Cipher Suite顺序:
比较两张图可以知道 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 的排位更加靠后了,所以和浏览器的连接中更容易选中位于它前面的更安全的Cipher Suite,这时浏览器就不提示错误了。
这一点也可以从support.plesk.com的一个回答中得到验证:
Q:After enabling of HTTP/2 some browsers are not able to connect to my web site. Why?
A: HTTP/2 protocol specification defines that TLS 1.2 must be used for any implementation.Also it recommends to use strong ciphers list for encrypted connections. Check RFC #7540 for detailshttps://tools.ietf.org/html/rfc7540. Based on our security team research and opinion of Plesk experts community we choose a very balanced ciphers list that provides support for all modern browsers and “A” category in terms of security on SSLLabs: https://www.ssllabs.com/ssltest/index.html at the same time.If you have enought technical expertize on this you can simply customize ciphers list to allow support for old browsers.
翻译:
问:在启用HTTP/2之后部分浏览器不能链接到我的网站,为什么呢?
答: HTTP/2协议规范定义了它是建立在 TLS 1.2 协议之上的。它同时建议使用使用强度高的cipher列表用户加密传输。请查看RFC #7540获取详情。在我们安全研究团队和Plesk社区专家的建议下我们选择了一个比较平衡的cipher列表,并在SSLLabs上面对所有现代浏览器进行测试全部取得了A的评级。如果你在这方面有充分的技术经验,你可以自定义这份cipher列表去支持陈旧的浏览器。
总结:
如果用证书加密网站后在大部分浏览器中可以正常访问,只在部分浏览器中不能访问,并且有NS_ERROR_NET_INSDEQUATE_SECURITY(加密安全等级不够)之类的提示,可以先尝试下面的命令来解决问题
RedHat/CentOS系统
/usr/local/psa/bin/http2_pref enable
Debian/Ubuntu系统
/opt/psa/bin/http2_pref enable