术语表

OCSP (在线证书状态协议)

最后核实

定义

OCSP 是 RFC 6960 定义的在线证书状态协议,客户端可以向 CA 的响应服务器查询某一张证书当前是有效、已吊销还是未知。

OCSP 是一种“一问一答”式的吊销查询协议,规范见 RFC 6960。客户端把证书序列号,以及签发者名称和公钥的哈希,发到证书 AIA 扩展里写明的响应地址,CA 返回一个带签名的结果:good(有效)、revoked(已吊销)或 unknown(未知)。每个响应都带有 thisUpdate 和 nextUpdate 时间,在过期前可以缓存。

为什么重要

OCSP 原本是为了替代体积较大的 CRL,但缺点同样明显:每次查询都会让 CA 知道用户正在访问哪个网站;首次连接要多等一次网络往返;而且绝大多数客户端采用“软失败”,查不到就直接放行。Chrome 很早就不再对普通证书做实时 OCSP 查询,而是依赖自己推送的吊销列表。CA/B 论坛 SC-063 号投票自 2024-03-15 起把 OCSP 改为可选、CRL 改为强制;Let's Encrypt 也已在 2025-08-06 关闭了 OCSP 响应服务。证书里仍有 OCSP 地址的服务器,应当开启 OCSP Stapling,由服务器代为获取响应。

例子

先取出响应地址,再用 OpenSSL 查询:

openssl x509 -in cert.pem -noout -ocsp_uri
openssl ocsp -issuer intermediate.pem -cert cert.pem \
  -url http://ocsp.example.com -resp_text

返回 cert.pem: good,并带有 This Update 和 Next Update 时间,就是正常。第一条命令没有任何输出,说明证书里根本没有 OCSP 地址,这对只发布 CRL 的 CA 来说是正常现象,并不代表证书有问题。

常见误区

  • 浏览器每次连接都会查 OCSP。 Chrome 对普通证书并不做实时 OCSP 查询;做查询的客户端在响应服务器不可达时一般也会直接放行。
  • 每张证书都有 OCSP 地址。 SC-063 之后 CA 可以只发布 CRL,2025-05-07 以后签发的 Let's Encrypt 证书都不再包含 OCSP 地址。
  • unknown 就等于已吊销。 unknown 只表示响应服务器不认识这个序列号,常见原因是查错了签发者证书或响应地址。

延伸阅读