更快更安全,HTTPS优化之路(上)

上一篇文章波波分享了《从HTTP到HTTPS再到HSTS演进之路》,不知道小伙伴们是不是感觉到网站升级https之后就感觉万事大吉了呢?其实在网站安全方面升级https或者配置一个SSL证书只能是入门中的入门,在安全这条路上等待我们去折腾的还有很多,这篇文章波波就为朋友们分享HTTPS的相关优化。

1、HSTS优化。

看过上一篇文章的的朋友相信对HSTS已经不陌生了,没看过的可以重新点击文章开始的连接看看,所以这里不啰嗦了。

hsts的头部格式如下:

  1. Strict-Transport-Security: max-age=<expire-time>[; includeSubDomains][; preload]

其中max-age:有效时间;浏览器记住的有效时间。includeSubDomains:是否包含子域名;可选参数。preload:是否预加载;可选参数。

以Nginx为例,我们需要打开对应网站的配置文件,添加如下一行代码:

  1. 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 请求接口,对访问速度有明显提升。

开启之前我们首先需要检查服务器是否支持,检查方法如下:

  1. openssl s_client -connect [yoursite.com]:443 -status

如果服务器支持的话你会在“OCSP Response Data”中看到“OCSP Response Status: successful (0x0)”,如果看不到则说明服务器不支持,您可以升级服务器openssl版本。

Nginx开启方法只需要在配置文件中添加三行配置即可,如下所示:

  1. server
  2. {
  3.     listen 443 ssl;
  4.     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  5.     ssl_certificate /etc/ssl/bundle.crt;
  6.     ssl_certificate_key /etc/ssl/your_domain_name.key;
  7.     ssl_stapling on;
  8.     ssl_stapling_verify on;
  9.     ssl_trusted_certificate /path/to/certs/chained.pem;
  10. }

如果 ssl_certificate 指令指定了完整的证书链,则 ssl_trusted_certificate 可省略。

如果是Apache服务器,则需要在<vhost></vhost>中间添加:

  1. SSLUseStapling on

在 <VirtualHost></VirtualHost> 外添加:

  1. SSLStaplingCache shmcb:/tmp/stapling_cache(128000)

例如:

  1. SSLStaplingCache shmcb:/tmp/stapling_cache(128000)
  2. <VirtualHost *:443>
  3. SSLEngine on
  4. SSLProtocol all -SSLv3 -SSLv2
  5. SSLCertificateFile /path/to/your_domain_name.crt
  6. SSLCertificateKeyFile /path/to/your_private.key
  7. SSLCertificateChainFile /path/to/root.crt
  8. SSLUseStapling on
  9. </VirtualHost>

然后重启Apache即可。

通过上面的折腾,我们可以在myssl.com网站上对自己的网站安全性能进行一个评估,这时我们会发现单纯配置SSL证书后的网站最高等级是A级,而开启上述特性之后安全性能已经到了A+级。由于时间已经是凌晨了,今天先写到这里,明天继续为大家分享《更快更安全,HTTPS优化之路(下)》。晚安亲们!

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!