什么是 OCSP Stapling?

原本每台浏览器都要自己去问证书机构"这张证书还有效吗",服务器代为查询、把结果连证书一起交出来,就叫 Stapling。一问一答被省掉,证书机构的压力也小得多。

第 75 期对比过两种吊销检查方式,实时查询比下载整份清单更轻,但它自己也有麻烦:每一次访问,浏览器都要单独去问一遍证书机构,来回一趟就是几百毫秒。

这个查询还会留下痕迹。证书机构能看到谁在什么时候查了哪张证书,等于把用户的浏览行为透给第三方。更麻烦的是可用性:如果证书机构那台服务器响应慢或者连不上,浏览器多半选择放行,检查就形同虚设。

Stapling 把这件事挪到了服务器一侧。服务器定期向证书机构要一份带签名和时间的证书状态,缓存下来;浏览器来连接时,服务器把这份状态连证书一起放进握手里递过去。浏览器只验证签名和时间,不用再对外发请求。

安全性没有被削弱,因为签名是证书机构出的,服务器伪造不了。代价是时效性:状态有有效期,从证书被吊销到新状态被取回之间,有一段空窗。

这套做法写在 2006 年的传输层扩展标准里,主流服务器软件都支持,但需要显式配置,而且配置好了也未必真的生效——服务器得能连上证书机构的服务器、证书链得配全,否则默默失败。

另有一个配套的证书扩展,作用是要求浏览器"必须看到"这份状态,没带就直接拒绝连接。它把吊销检查从可选变成强制,但一旦服务器的取回流程出问题,网站自己就打不开了。