各个浏览器对HTTPS相关的支持情况,可以在《Qualys ssltest页面》查看,也可以通过《Qualys兼容性页面》查看某个浏览器对HTTPS支持的非常详细的一些属性。
老旧浏览器不兼容HTTPS主要体现在如下几个方面:
(1)只支持SSLv2/SSLv3协议
IE 6只支持SSLv2和SSLv3,也就是说HTTPS网站要支持IE 6,就必须启用SSLv3。
(2)加密套件不匹配
有些浏览器仅仅支持有限的CipherSuite,而这些有限的加密套件由于安全问题或其他原因在有些网站的服务器中并不支持,导致在TLS握手中,因为没有协商出客户端和服务端都能支持的加密套件而导致握手失败。
(3)不支持SNI
现在还有一定用户量的Windows XP IE6-8、Android 2.x Webview都不支持SNI。如果要避免在这些浏览器中出现证书错误,只能将使用不同证书的HTTPS站点部署在不同IP上,最简单的做法是分开部署到不同机器上。
(4)证书不支持
简单来说,就是客户端拿到证书后,由于不支持高版本的哈希函数,导致无法进行证书签名验证,从而直接失败。HTTPS网站需要通过CA取得合法证书,证书通过数字签名技术确保第三方无法伪造。证书的简单原理如下:
A)根据版本号、序列号、签名算法标识、发行者名称、有效期、证书主体名、证书主体公钥信息、发行商唯一标识、主体唯一标识、扩展生成 TBSCertificate(待签名证书To Be Signed Certificate)信息;
B)签发数字签名:使用 HASH 函数对 TBSCertificate 计算得到消息摘要,用 CA 的私钥对消息摘要进行加密,得到签名;
C)校验数字签名:使用相同的 HASH 函数对 TBSCertificate 计算得到消息摘要,与使用 CA 公钥解密签名得到内容相比较;
使用SHA-1做为HASH函数的证书被称之为SHA-1证书,由于目前已经找到SHA-1的碰撞条件,将证书换成使用更安全的SHA-2做为HASH函数的SHA-2证书被提上日程。
实际上,微软已经宣称自2017年1月1日起,将全面停止对SHA-1证书的支持。届时在最新版本的Windows系统中,SHA-1证书将不被信任。而根据Chrome官方博客的文章,使用SHA-1证书且证书有效期在2016年1月1号至2016年12月31号之间的站点会被给予「安全的,但存在漏洞」的提示,也就是地址栏的小锁不再是绿色的,并且会有一个黄色小三角。而使用SHA-1证书且证书有效期超过2017年1月1号的站点会被给予「不安全」的红色警告,小锁上直接显示一个红色的叉。
然而,并不是所有的终端都支持SHA-2证书,服务端不支持还好办,浏览器只能依赖于用户升级了。下面是常见浏览器支持SHA-2证书的最低版本:
可以看到,如果要照顾没有打XP SP3补丁的IE6用户,只能继续使用SHA-1证书。
另外有些浏览器对ECC这种新型的证书支持度更差,也会导致失败哦。