如今越来越多的网站启用了SSL/TLS即HTTPS加密传输协议,有些站长看到浏览器地址栏网址前面出现小绿锁就以为部署完成,其实不然,SSL/TLS的服务也是分评级的,业内比较权威的检测部署SSL/TLS是否符合行业最佳实践有两个标准,分别为支付卡行业安全标准PCI DSS和苹果公司的ATS规范。
所有iOS APP开发人员都知道早在2016年WWDC发布会上苹果就宣布:提交到App Store的应用程序将要被强制采用ATS协议, App必须通过传输加密通道HTTPS连接网络服务,来保证应用程序和Web服务之间的安全性。若日后仍采用明文HTTP传输数据的APP,将不能在Apple Store中被用户下载使用。而PCI DSS全称Payment Card Industry (PCI) Data Security Standard,是由PCI安全标准委员会的创始成员(visa、mastercard、American Express、Discover Financial Services、JCB等)制定,力在使国际上采用一致的数据安全措施,简称PCI DSS。
这两个标准如今成为行业衡量SSL/TLS是否最佳部署的重要标准,换言之只有同时通过了PCI DSS和Apple ATS测试,启用的HTTPS才是安全合格的。
如何检测部署的SSL/TLS是否符合行业最佳实践标准呢?
可以通过一些网站在线检测,比较知名的HTTPS检测网站是 myssl.com 打开后输入网站域名即可查询结果。
检测通过会显示评级、 PCI DSS和ATS均为合规:
如果显示PCI DSS 不合规,说明HTTPS还没有完美部署,如图:
这是由于PCI安全标准委员会规定2018年6月30日之后,开启TLS1.0将导致PCI DSS不合规。
解决方案:
评估兼容性后禁用TLS1.0,下面以nginx服务器为例介绍如何禁用TLS1.0。
打开网站的.conf文件,需要说明的是此文件为网站的服务器配置文件,不是网站源码文件,和网站源码文件无关。
复制到.conf文件的证书挂载代码中,如图:
如果文件中已经存在ssl_protocols TLSv1 TLSv1.2 则用上面的代码替换即可。
修改后保存文件,重启nginx服务即禁用了TLS1.0,重新检测会显示 PCI DSS 合规。
后话:
TLS1.3都出来了,所以是时候禁用TLS1.0了,未来主流应该是TLS1.2+TLS1.3,可能有些站长会有疑问,禁用TLS1.0后的兼容性如何?兼容性方面其实是有一些影响的,比较老旧系统上自带的浏览器不支持,但主流用户使用的Chrome、Firefox、EDGE浏览器、Opera以及360、QQ、百度、搜狗等各种国内浏览器都基本支持,所以没有必要过多担心兼容性问题。
下图中列出了哪些浏览器不支持TLS1.2和TLS1.3。