Apache2开启OCSP Stapling

最近感觉网站加载的速度有点慢,在“等待响应”阶段花了很多时间,于是想着优化一下,能优化一点是一点。除了放弃JetPack插件以外,考虑到可能在HTTPS上也受到一点影响,便试着从这里着手。

OCSP 是一个在线证书查询接口,它建立一个可实时响应的机制,让浏览器可以实时查询每一张证书的有效性,解决了 CRL 的实时性问题,但是 OCSP 也引入了一个性能问题,某些客户端会在 SSL 握手时去实时查询 OCSP 接口,并在得到结果前会阻塞后续流程,这对性能影响很大,严重影响用户体验。(OCSP 地址也在证书的详细信息中)
OCSP Stapling 就是为了解决 OCSP 性能问题而生的,其原理是:在 SSL 握手时,服务器去证书 CA 查询 OCSP 接口,并将 OCSP 查询结果通过 Certificate Status 消息发送给浏览器,从而让浏览器跳过自己去验证的过程而直接拿到结果,OCSP 响应本身有了签名,无法伪造,所以 OCSP Stapling 既提高了效率也不会影响安全性。另外服务器有更好的网络,能更快地获取到 OCSP 结果,同时也可以将结果缓存起来,极大的提高了性能、效率和用户体验。

阿里云 CDN HTTPS 最佳实践——OCSP Stapling

百度简单搜了一下(懒得开那啥上Google),大多是Nginx的配置,并且有些不知道为什么看起来还挺复杂的。对于我这种单站点Apache2的设置其实很简单,只要在 /etc/apache2/mods-enabled/ssl.conf(Ubuntu或Debian包的默认位置,自行编译的话可能在 conf/extra/httpd-ssl.conf ) 中加入以下两行:

SSLUseStapling On
SSLStaplingCache "shmcb:ssl_stapling(32768)"

然后重启Apache就可以了。不过究竟有多少提升,没能仔细前后对比过所以不好说,配合禁用插件总的效果还是有的。

检验OSCP响应和其他复杂情况的配置方法,参考Apache官方文档