HTTPS安全与兼容性配置指南

读书笔记2019-06-21人生经验 7103 0A+A-

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司(Netscape)进行,并内置于其浏览器Netscape Navigator中,提供了身份验证与加密通讯方法。现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

自从MySSL推出之后,很多网站HTTPS检测评分都达到了A或者A+,但在看检测结果的时候,发现类似于百度和淘宝这类大用户群的网站居然没有评级到A或者在使用的加密套件上有橙色的加密套件,这就让我们非常诧异,难道是这些个网站不注重安全么?如果说百度评级不高,那还能说得过去,毕竟在搜索的时候没啥重要信息,牺牲一点安全性获取极致的兼容性。但是淘宝这种电商不应该不会不重视网站的安全性。那又是什么原因让这些网站造成了这种情况呢?通过仔细的观察报告结果和查询资料发现,这些网站这样做的原因是为了更好的兼容性。但各家也有不同的做法

百度

先来看一下的百度的评分:

从图中可以看出www.baidu.com这个网站的评分是C,造成这个评分的主要原因是使用RC4加密套件,文章一开始就说了,评不到A或者更高的原因是为了兼容性,那么再看一下客户端模拟的结果:

从这里发现哪怕用户使用的是IE6这款老古董级别的浏览器也能访问百度。这样的兼容性可以说是异常良好了。但是安全性就有点欠缺,如果要适配IE6这款浏览器,那么SSL协议就必须得支持SSL2和SSL3,因为IE6支持也仅支持这两个协议,SSL2是明确说明不安全的了,SSL3上又有著名的POODLE漏洞问题,SSL3上的所有CBC加密套件都会受该漏洞影响,除去CBC加密套件,那么就只剩下RC4系列的加密套件了。这个没得选择。

淘宝

相对于百度,面对兼容性问题,淘宝又是另一种做法了。 淘宝虽然评分到了A,但是在支持的加密套件中存在橙色的选项:

从图中可以看出淘宝舍弃了SSL3协议,换句话说就是放弃了对IE6的支持,这个从客户端模拟结果上也可以体现出来:

但是那个黄色的TLS_RSA_WITH_3DES_EDE_CBC_SHA又是什么原因呢?这是为了兼容XP上的IE8这类浏览器,这些浏览器器支持加密套件基本都是不安全的,唯一比较安全的就是3DES系列的了。为了兼容这些浏览器这应该算是一种比较好的方式了。

如何达到A+

最近发现有很多blog主在他们的blog中推荐我们MySSL,这让我们非常惊喜,在这里首先感谢一下这些blog主对我们MySSL的推广。 但是在看到 给启用 SSL 的站点推荐个 HTTPS 专用工具网站 的评论中,有一些blog主对如何评到A以及A+不是很理解,这里简单的说明一下。 首先要是,这个评分,并不仅仅是针对于证书的部署情况而言的,这是一个多方面综合的评级。其中包括了证书、SSL协议、加密套件、漏洞、不安全的外链等等。如果您的网站的评分已经达到A,那么没有被评到A+的最大的可能性就是没有使用HSTS,使用HSTS的方法很简单,只要在添加Strict-Transport-Security这个HTTP头部信息即可。 用nginx服务器做说明:

add_header Strict-Transport-Security "max-age=31536000";

但有一点需要注意,Strict-Transport-Security中的max-age的时间不能小于15552000。

总结

如果您的服务器需要支持IE6这种古董级别的浏览器,那么就按照百度的做法,如果说对兼容性没有太大的需求,只要主流的浏览器能够访问那么就不要支持3DES系列的加密套件,如果说想要在保证安全性的同时,也要有最好的兼容性,那么就请按照淘宝的配置方式进行配置。 下面给出这三种配置情况:


类似百度

Nginx

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH;  ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

类似淘宝

Nginx

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

最好的安全性

Nginx

ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256::!MD5;  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

但也有可能因为openssl版本的不同会导致相同的配置得到不同的检测结果。如果您的openssl处于较新的版本那么按照最好的安全性进行配置,得到一个A,应该是没有问题的。



来源:https://myssl.com/

本文标题:HTTPS安全与兼容性配置指南
本文链接:http://zvvv.cn/post/598.html
作者授权:除特别说明外,本文由 Exciting 原创编译并授权 读书笔记 刊载发布。
版权声明:本文使用「署名-相同方式共享 4.0 国际」创作共享协议,转载或使用请遵守署名协议。
收藏0
发表评论