在过去的几年中,互联网已经迅速过渡到HTTPS,根据CloudFlare的测试报告,让我们看一下如何优化Apache + HTTPS的性能以获得更佳的访问体验。
1. 开启 HTTP/2
HTTP/2主要是为了解决现HTTP 1.1性能不好的问题才出现的。HTTP/2 相比于 HTTP/1.1,可以说是大幅度提高了网页的性能,只需要升级到该协议就可以减少很多之前需要做的性能优化工作。apache启用HTTP/2只需要将以下代码加入到配置文件中即可:
# 对于 https 服务器
# 对于 http 服务器
2.开启 SSL session cache
启用 SSL Session 缓存可以减少 TLS 的反复验证,减少 TLS 握手。 1M 的内存就可以缓存 4000 个连接,非常划算,现在内存便宜,尽量开启。
3.启用OCSP Stapling
OCSP Stapling 就是为了解决 OCSP 隐私问题和性能问题而生的。
其原理是:网站服务器将自行查询OCSP服务器并缓存响应结果,然后在与浏览器进行TLS连接时返回给浏览器,这样浏览器就不需要再去查询了。因此,浏览器客户端也不再需要向任何第三方披露用户的浏览习惯,完美解决了隐私问题。同时,当有客户端向服务器发起 SSL 握手请求时,服务器将证书的 OCSP 信息随证书链一同发送给客户端,从而避免了客户端验证会产生的阻塞问题,提升了HTTPS性能。由于 OCSP 响应是无法伪造的,因此这一过程也不会产生额外的安全问题。
所以,在服务器上部署OCSP Stapling能极大地提高安全稳定性能、使网站访问速度更快,用户体验更好。
如果不启用 OCSP Stapling 的话,在用户连接你的服务器的时候,需要去验证证书,这个验证证书的时间不可控,我们开启OCSP Stapling后,可以省掉这一步。OCSP Stapling能提升TLS性能达30%。目前主流的web server都已支持OCSP Stapling,如Apache( 2.3.3 及以上),Nginx(1.3.7及以上), IIS(Win2008及以上)。
/www/server/apache/conf/extra 路径下的 httpd-ssl.conf 文件打开,将下述代码的注释去掉
- SSLStaplingCache "shmcb:/www/server/apache/logs/ssl_stapling(32768)"
复制代码 然后在apache配置文件中找到mod_socache_shmcb.so
取消前面的注释#
上述两行代码添加在apache配置文件中,保存后重启apache。
检测地址:https://www.ssllabs.com/ssltest/
输入域名,点击 submit 进行检测。
测试完成,若结果中 ocsp stapling 这项是 yes,代表你站点的 ocsp stapling 已成功开启。
基于Apache的HTTPS性能最佳实践 |