保证网站安全——如何正确开启HTTPS、HTTP/2.0

HTTPS就是HTTP的安全加密版,可以防止通信过程中的数据的泄密和被篡改。
HTTP/2.0是下一代HTTP协议,可以增强网站的加载速度和安全性。

今天我嘲笑了一番Tao,SSL加密怎么这么差……

TIM截图20180206203205.png

他的博客竟然有POODLE漏洞……

不过我的

TIM截图20180206203534.png

也只有A-,感觉没有做到最好。

于是我开始捣鼓起来。

SSL证书的选择

证书认证类型

SSL证书目前分为DV(Domain Validation SSL Certificate)OV(Organization Validation SSL Certificate)EV(Extended Validation SSL Certificate)等认证类型,参见以下表格查看证书的不同之处。

证书类型 价格 加密强度 特性
DV 便宜 较低 域名级认证;支持单域名或多域名加密
OV 中等 中等 公司或组织认证;支持单域名或多域名加密;支持公司或组织名称认证
EV 昂贵 很高 公司或组织认证;支持单域名或多域名加密;支持公司或组织名称认证;支持浏览器显示安全加密公司或组织标识
DV Wildcard 中等 较低 域名级认证;支持单域名或多域名泛域名加密
OV Wildcard 较贵 中等 公司或组织认证;支持单域名或多域名泛域名加密;支持公司或组织名称认证

本人推荐使用DV Wildcard,既便宜又支持泛域名。

证书加密类型

对称性加密算法:AES、DES、3DES、RC4、CHACHA20等

该种算法在设计本质上支持解密且只能用唯一一个密钥解密。DES是一种分组数据加密技术(先将数据分成固定长度的小数据块,之后进行加密),速度较快,而3DES是一种基于DES的加密算法,使用3个不同密匙对同一个分组数据块进行3次加密,使得加密强度更高。而AES算法有着更高的速度和资源使用效率,安全级别也较之更高。RC4是一种速度较快的加密算法,不过使用XOR当密钥中出现重复部分可能会被轻易破解,但只要密钥长度足够,还是很安全的。

非对称性加密算法:RSA、DSA、ECC等

该种算法因为加密和解密使用的是两个不同的密钥(一个公钥,一个私钥),所以这种算法叫作非对称加密算法。RSA算法中私钥可以解密所有对应公钥加密的信息,但是可以防止中间人攻击,只要保证私钥安全,就能保证通信安全,所以RSA是企业级应用标准。DSA安全性比较低,不推荐,但是速度很快。ECC则是更新,更高效,更安全的算法,带宽要求较低,不过处理速度可能会有些慢。还有ECC支持椭圆曲线等类型,本文不再概述。

本人推荐RSA2048及以上或者ECC(如果证书支持)配合AES256使用。

注意添加全证书链。

推荐设置(Nginx):

ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE;

服务器端协议设置

让服务器仅支持TLS 1.0、TLS 1.1、TLS 1.2(必需)会增强服务器的安全强度。

推荐设置(Nginx):ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

HTTP严格传输安全(HSTS)

推荐设置(Nginx):add_header Strict-Transport-Security "max-age=63072000(该值可修改为大于15768000的任何值); includeSubdomains; preload";

开启HTTP/2.0支持

首先验证你的Nginx是否为1.9.5及以上版本。

由于HTTP/2.0需要SSL的TLS 1.2支持,请先按照上面的步骤打开SSL的TLS 1.2协议。

然后按照以下示例设置即可:

server {
  listen        443 **ssl** **http2**; 
  server_name   yourdomain;
……
  ssl                   **on**;
……
}

listen后面增加http2即可,注意HTTP/2.0和Google的SPDY冲突,不能同时开启。

然后重启Nginx服务即可。

查看是否打开HTTP/2.0,只需要F12然后查看Protocol是不是h2就行了。

本文所有内容实践后可以到MySSL上进行检测。

有关HTTP/2.0、SPDY、HTTP/1.1的比较,请见http://www.infoq.com/cn/news/2015/02/https-spdy-http2-comparisonhttps://www.qianduan.net/a-simple-performance-comparison-of-https-spdy-and-http2/

本文距离最后一次更新已超过180天,部分内容可能会随着时间的推移变更或失效。

相关文章

此处无声胜有声