← 返回题目列表

证书吊销是怎么回事?CRL 和 OCSP 有什么区别?

高频 困难 第 15 / 29 题 更新于 2026/07/31
HTTPS证书吊销OCSPCRLTLS

简化版

证书吊销用于处理“证书还没过期但已经不可信”的情况,例如私钥泄露、误签发、主体变更。CRL 是 CA 定期发布吊销列表,OCSP 是客户端在线查询某张证书状态;OCSP Stapling 则由服务器把 CA 签名的状态证明随握手发给客户端。

详细版

证书有效期不是唯一判断条件。证书可能在有效期内被吊销。

  1. CRL:Certificate Revocation List,CA 发布一个包含已吊销证书序列号的列表,客户端下载后检查。
  2. OCSP:Online Certificate Status Protocol,客户端向 OCSP 响应器查询某张证书是否 good/revoked/unknown。
  3. OCSP Stapling:服务器提前向 CA 获取 OCSP 响应,并在 TLS 握手中“装订”给客户端,减少客户端额外查询。
  4. 吊销检查会带来性能、隐私和可用性权衡。
  5. 浏览器对吊销失败的处理可能有 soft-fail 策略,并不总是硬失败。

面试要说清:CRL 是列表,OCSP 是在线查询,Stapling 是服务端代取状态证明。

完整版教学

一、为什么证书没过期也可能不可信

证书有效期只能说明“时间上还有效”,不能说明“风险上仍可信”。如果服务器私钥泄露,攻击者可在证书有效期内伪装站点;如果 CA 误签发了证书,也必须让客户端尽快不再信任它。

证书状态判断:
1. 时间未过期
2. 域名匹配
3. 证书链可信
4. 未被吊销

吊销机制补的是第 4 点。没有吊销,证书一旦签出,就只能等自然过期,风险窗口太长。

记忆钩子:过期是“时间到了”,吊销是“虽然没到期,但这张票作废了”。

二、CRL:下载一份吊销名单

CRL 是 CA 周期性发布的吊销列表,里面记录被吊销证书的序列号和吊销时间。客户端拿到证书后,可以下载对应 CA 的 CRL,检查序列号是否在名单里。

CRL:
CA = Example CA
revoked serials:
  0x1001
  0x20AF
  0x33CC

CRL 的优点是简单、可缓存;缺点是列表可能很大,更新有延迟。大型 CA 的吊销列表会越来越重,客户端下载和解析成本不低。

三、OCSP:在线问这张证书是否有效

OCSP 不下载整张名单,而是问“某张证书现在是什么状态”。响应通常有 goodrevokedunknown

Client -> OCSP Responder:
  serial = 0x20AF

Responder -> Client:
  status = revoked
  signed by CA

OCSP 比 CRL 更轻量,但会引入额外网络请求。它还可能泄露隐私,因为 OCSP 响应器能看到客户端正在验证哪个站点的证书。

四、OCSP Stapling 为什么更好

OCSP Stapling 让服务器定期向 CA 的 OCSP 响应器获取一份签名状态证明,然后在 TLS 握手时发给客户端。客户端不用再自己去问 CA。

Server 定期:
  ask OCSP responder -> get signed status

TLS 握手:
  ServerHello + Certificate + stapled OCSP response

它减少了客户端额外 RTT,也减少隐私泄露。客户端只需验证 stapled OCSP 响应的签名和有效期。

五、soft-fail 和 hard-fail 的取舍

如果 OCSP 查询失败,客户端该不该阻止访问?硬失败更安全,但 CA 或网络短暂故障会让大量网站不可用;软失败可用性好,但攻击者若能阻断 OCSP 查询,就可能绕过吊销检查。

策略优点缺点
soft-fail可用性好阻断查询可能绕过吊销
hard-fail安全性强CA/网络故障会影响访问
Stapling + Must-Staple更强约束部署要求高

真实浏览器和平台会结合证书类型、内置吊销列表、策略和风险做取舍。

六、线上部署要注意什么

服务端部署证书时,不只要配置证书和私钥,还要关注 OCSP Stapling、完整证书链、自动续期和吊销状态。证书链缺中间证书,会导致部分客户端验证失败;Stapling 配错,可能影响握手性能或兼容性。

openssl s_client -connect example.com:443 -servername example.com -status

这个命令可以查看服务端是否返回 stapled OCSP。还可以用浏览器开发者工具或 SSL Labs 类工具检查证书链和吊销配置。

七、常见误区与追问

  • 误区:证书没过期就一定可信。 私钥泄露、误签发、主体失效都可能导致证书被吊销。
  • 误区:CRL 和 OCSP 都是同一种查询。 CRL 是下载列表,OCSP 是查询单张证书状态。
  • 误区:OCSP Stapling 是服务器自己声明没问题。 Stapled 响应是 CA/OCSP 响应器签名的状态证明,不是服务器自说自话。
  • 追问:OCSP 有什么隐私问题? 客户端直接查询会暴露正在访问的证书域名或序列号。
  • 追问:吊销检查失败为什么不一定阻断? 硬失败会牺牲可用性,很多场景会 soft-fail。
  • 追问:怎么检查服务端是否开启 Stapling? 可用 openssl s_client -status 或证书检测工具查看。

八、加强记忆

证书吊销按三层记:CRL 是“黑名单文件”,OCSP 是“在线问单张证书”,OCSP Stapling 是“服务器把 CA 签好的状态证明随握手带上”。它解决的是证书未过期但已不可信的问题。