OCSP装订(OCSP Stapling)是什么?开启它优化HTTPS速度
HTTPS已大面积普及,相关的技术也已经非常成熟。要明白OCSP装订是什么,首先要明白OCSP是个啥。OCSP(英文全称Online1Certificate Status1Protoco),即在线证书状态协议,是用来检验证书合法性的在线查询协议。
翻译成人话:网站的每个访问者都会进行OCSP查询。OCSP装订,可代替在线证书状态协议(OCSP)来查询证书的状态。那就可以优化 HTTPS 速度,因为大部分CA的OSCP服务器都不在中国大陆内
了解这一切,先从CRL说起
当用户通过HTTPS访问您的站点时,服务器需要将您站点的TLS证书响应给用户。用户浏览器会检查证书的到期时间,并拒绝任何已过期/已无效的证书。
在某些情况下,服务器拥有者因为私钥泄漏,必须将证书标记为无效,此时就依赖证书颁发机构实施至少一种方法来吊销有问题的证书并通知浏览器拒绝这些已被吊销的证书。
CRL(英文全称Certificate Revocation List),即证书吊销列表,是 PKI 系统中的一个结构化数据文件,该文件包含了证书颁发机构已经吊销的证书的序列号及其吊销日期。用户在访问您的站点前,浏览器会先下载并解析CRL文件,而后通过CRL文件校验您的证书是否已经吊销。
随着HTTPS的普及,已发布的CRL文件越来越大,这无疑加大了每次链接的网络开销,CRL无法很好的扩展表现的越来越明显。
OCSP验证网站服务器的证书是否有效
OCSP(英文全称Online1Certificate Status1Protoco),即在线证书状态协议,是用来检验证书合法性的在线查询协议。当用户通过HTTPS访问您的网站的时候,客户浏览器会通过OCSP响应者验证网站服务器的证书是否有效。(浏览器现在可以与响应者联系,以请求CA颁发的单个证书的吊销状态,而不必获取和处理整个CRL。)
OCSP看起来似乎是一种有效的解决方案,但新协议已被证明存在实用性问题。
- 性能问题,浏览器需要为每个新的HTTPS连接执行附加的HTTP请求,增加了网络开销;
- 安全问题,大多数实际的OCSP实施不够可靠(由于网络滞后,配置或应用程序错误),导致用户浏览器实施OCSP检查失败。如果无法访问OCSP服务器或服务器超时,浏览器将认为证书有效并继续进行HTTPS连接;
- 隐私问题,由于证书与密钥和域名相关联,并且浏览器在每个新的HTTPS连接之前请求吊销状态,这意味着浏览器会将其用户的网络历史的很大一部分泄漏给OCSP响应者。
OCSP装订是TLS证书状态查询扩展
OCSP装订 (OCSP Stapling)作为对OCSP协议缺陷的弥补,实现了服务器可以事先模拟浏览器对证书链进行验证,并将带有CA机构签名的OCSP验证结果响应保存到本地,最多可缓存7天。等到真正的握手阶段,再将OCSP响应和证书链一起下发给浏览器,以此避免增加浏览器的握手延时。由于浏览器不需要直接向 CA 站点查询证书状态,这个功能对访问速度的提升非常明显。
由于装订是在服务器中实现的,因此浏览器无法知道服务器是否真正支持装订,而且OCSP装订本身不能完全解决OCSP的软故障安全问题。
结果,具有持有被盗证书私钥的攻击者可以通过提供证书而无需OCSP装订来执行降级攻击。受害者的浏览器无法证实服务器是否真正支持装订,并无法像通常那样继续查询OCSP响应程序。然后,攻击者可以简单地阻止此OCSP查询,并有效地迫使浏览器接受证书有效。
OCSP必须装订(英文全称OCSP Must-Staple),即CA和浏览器供应商引入的防止OCSP装订被攻击的SSL证书扩展,该扩展要求必须对证书进行OCSP装订。如果浏览器遇到带有此扩展名的证书而未使用OCSP装订,则将被拒绝。
OCSP必须装订可以缓解上述降级攻击,还可以减少流向CA的OCSP响应程序的不必要的流量,这也帮组提高了OCSP的整体性能。
如何开启OCSP装订 (OCSP Stapling)
https://www.bilibili.com/read/cv12383189
另外,目前已知阿里云、腾讯云、百度云的CDN服务均支持 OCSP装订 功能。