OCSP(Online Certificate Status Protocol,在线证书状态协议)是客户端向 OCSP responder 查询单张 数字证书 是否被 CA(证书颁发机构) 吊销的协议。
核心问题
证书在有效期内也可能因为私钥泄露、误签、主体变更或违规而需要撤销。只检查证书签名和过期时间无法知道它是否已被吊销。OCSP 提供按证书序列号在线查询状态的机制。
核心机制
OCSP 查询的核心对象是:
| 对象 | 作用 |
|---|---|
| 证书序列号 | 标识要查询的证书 |
| issuer 信息 | 指明是哪家 CA 签发的证书 |
| OCSP responder | 返回证书状态的服务 |
| OCSP response | 由 responder 签名的状态结果 |
状态通常是:
good -> 未被标记为吊销
revoked -> 已吊销,并可能带吊销时间和原因
unknown -> responder 不知道这张证书浏览器直接查询 OCSP 会带来隐私和可用性问题,所以 TLS 常用 OCSP stapling:服务器提前向 responder 获取签名状态响应,并在握手时“装订”给客户端。客户端验证这个响应的签名和时间窗口。
工程用途
- TLS 客户端判断服务器证书是否已被吊销。
- 企业 PKI 中快速撤销员工、设备或服务证书。
- 监控 OCSP responder 可用性和响应新鲜度。
- 配合短生命周期证书减少撤销系统压力。
边界与常见坑
good不等于永远安全:它只说明当前响应窗口内未被标记为吊销。- 软失败会削弱安全性:客户端若在 OCSP 查询失败时继续接受证书,吊销效果会下降。
- stapling 响应会过期:服务器必须定期刷新,否则客户端可能拒绝连接。
- OCSP 不替代完整证书验证:仍要检查证书链、域名、用途、有效期和算法。
- 隐私问题真实存在:直接 OCSP 查询可能让 responder 看到用户访问了哪些站点证书。