术语表

OCSP Must-Staple (TLS Feature 扩展)

最后核实

定义

OCSP Must-Staple 是一种证书扩展,要求客户端在服务器没有随握手提供有效 OCSP 响应时直接拒绝该证书。

OCSP Must-Staple 是 RFC 7633 定义的 TLS Feature 证书扩展,取值为 status_request。它相当于证书持有者的一份承诺:凡是使用这张证书的服务器,都会在握手中附带 OCSP 响应;客户端因此可以把“没收到响应”当作硬失败,而不是默默放行。

为什么重要

Must-Staple 是业界试图把 OCSP 从“软失败”变成“硬失败”的主要方案,同时又不必让每个浏览器都去询问 CA。但实际支持一直很有限:Firefox 会强制执行,缺少响应时直接报错;Chrome 则忽略这个扩展。运维上它也很脆弱:响应服务器故障,或者 nginx 重启后还没取回响应,都会让强制执行的客户端无法访问网站。如今行业正在远离 OCSP:SC-063 投票让 OCSP 对 CA 变为可选,Let's Encrypt 在 2025-05-07 从新证书中移除 OCSP 地址的同时,也开始拒绝 Must-Staple 申请。

例子

检查证书是否带有该扩展:

openssl x509 -in cert.pem -noout -text | grep -A1 "TLS Feature"

输出 TLS Feature: 且下一行是 status_request,就说明这是一张 Must-Staple 证书;没有输出则表示证书不含该扩展。

常见误区

  • Must-Staple 是服务器上的一个开关。 它是在签发时写进证书的,服务器还需要另外配置 OCSP Stapling,两者缺一不可。
  • 所有浏览器都会强制执行。 Chrome 不执行,强制执行基本只见于 Firefox。
  • 现在仍是推荐的加固手段。 CA 纷纷放弃 OCSP,Let's Encrypt 已无法再申请到 Must-Staple 证书;缩短证书有效期、依靠浏览器端吊销列表才是当前方向。

延伸阅读