上一篇文章波波分享了《从HTTP到HTTPS再到HSTS演进之路》,不知道小伙伴们是不是感觉到网站升级https之后就感觉万事大吉了呢?其实在网站安全方面升级https或者配置一个SSL证书只能是入门中的入门,在安全这条路上等待我们去折腾的还有很多,这篇文章波波就为朋友们分享HTTPS的相关优化。
1、HSTS优化。
看过上一篇文章的的朋友相信对HSTS已经不陌生了,没看过的可以重新点击文章开始的连接看看,所以这里不啰嗦了。
hsts的头部格式如下:
- Strict-Transport-Security: max-age=<expire-time>[; includeSubDomains][; preload]
其中max-age:有效时间;浏览器记住的有效时间。includeSubDomains:是否包含子域名;可选参数。preload:是否预加载;可选参数。
以Nginx为例,我们需要打开对应网站的配置文件,添加如下一行代码:
- add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
重启Nginx即可。
2、HSTS Preloading:
关于这一项我不打算花太多时间去介绍,hsts preload list 是一个谷歌维护的列表,现在大部分主流浏览器都支持这个列表,这个列表直接告诉浏览器要用 HTTPS 访问的站点有哪些,所以在访问站点之前,浏览器先捞一遍这个列表,如果要访问的站点在这里面,就直接用 HTTPS 进行访问,所以即使是第一次访问,也会走 HTTPS 了。
需要注意的是如果你只是想短期玩玩的话,不建议你加入,因为加入后后期切换会很麻烦。需要的童鞋可以点击连接进入。https://hstspreload.org/,注意科学上网哦~~
3、开启http/2
http 2.0相对而言优势还是非常明显的,是彻底的二进制传输,支持多路复用等诸多特性,尤其是网页加载速度方面更是大大的提升。菠菜园由于前置了CDN所以部分用户感觉很慢,但是去掉CDN之后网站几乎是秒开。所以非常建议大家开启。开启的方法也很简单,以nginx为例,只需要在配置文件中找到"listen 443"在后面添加“http2 default_server”就OK了。
4、开启OCSP Stapling
OCSP (Online Certificate Status Protocol) 通常是 CA 提供来实时验证证书是否合法有效的。客户端就可以根据证书中的 OCSP 信息,发送查询请求到 CA 的在线验证地址来查询证书是否有效。OCSP 的问题在于,对 CA 机构的验证接口高可用性有要求,增加了浏览器握手的延时。
OCSP Stapling 技术是对 OCSP协议 的进一步升级。服务器事先模拟浏览器对证书链进行验证,然后将 OCSP 验证结果缓存到本地。这样,当浏览器访问站点时,在握手阶段,可以直接拿到 OCSP 响应结果和证书链,就不需要再向 CA 请求接口,对访问速度有明显提升。
开启之前我们首先需要检查服务器是否支持,检查方法如下:
- openssl s_client -connect [yoursite.com]:443 -status
如果服务器支持的话你会在“OCSP Response Data”中看到“OCSP Response Status: successful (0x0)”,如果看不到则说明服务器不支持,您可以升级服务器openssl版本。
Nginx开启方法只需要在配置文件中添加三行配置即可,如下所示:
- server
- {
- listen 443 ssl;
- ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
- ssl_certificate /etc/ssl/bundle.crt;
- ssl_certificate_key /etc/ssl/your_domain_name.key;
- ssl_stapling on;
- ssl_stapling_verify on;
- ssl_trusted_certificate /path/to/certs/chained.pem;
- }
如果 ssl_certificate 指令指定了完整的证书链,则 ssl_trusted_certificate 可省略。
如果是Apache服务器,则需要在<vhost></vhost>中间添加:
- SSLUseStapling on
在 <VirtualHost></VirtualHost> 外添加:
- SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
例如:
- SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
- <VirtualHost *:443>
- SSLEngine on
- SSLProtocol all -SSLv3 -SSLv2
- SSLCertificateFile /path/to/your_domain_name.crt
- SSLCertificateKeyFile /path/to/your_private.key
- SSLCertificateChainFile /path/to/root.crt
- SSLUseStapling on
- </VirtualHost>
然后重启Apache即可。
通过上面的折腾,我们可以在myssl.com网站上对自己的网站安全性能进行一个评估,这时我们会发现单纯配置SSL证书后的网站最高等级是A级,而开启上述特性之后安全性能已经到了A+级。由于时间已经是凌晨了,今天先写到这里,明天继续为大家分享《更快更安全,HTTPS优化之路(下)》。晚安亲们!