2、证书吊销基础:什么是证书吊销、CRL与OCSP简介、吊销原因

2.1 什么是证书吊销

证书吊销,说白了就是一张数字证书在到期之前,被CA提前宣布作废。

你可能会问:证书不是有有效期吗?为什么还要吊销?

嗯,这个问题我刚开始做PKI时也想过。后来在一次生产事故中才真正理解——证书的私钥泄露了,但证书还有两年才到期。如果不吊销,攻击者就能拿着泄露的私钥冒充你的服务器。你说可怕不可怕?

所以,证书吊销就是PKI体系里的紧急刹车机制。它让CA能在证书到期前,强制终止一张证书的信任效力。

核心要点:证书吊销 ≠ 证书过期。过期是自然失效,吊销是人为提前终止。两者在信任链上的效果相同——证书不再可信。

2.2 吊销的两种主流机制

目前业界就两种主流方案:CRL 和 OCSP。我分别说说。

2.2.1 CRL(证书吊销列表)

CRL 是个黑名单。CA 把所有被吊销的证书序列号写进一个列表,定期发布出来。客户端拿到证书后,去下载这个列表,查一下序列号在不在里面。

听起来简单吧?但实际用起来坑不少。

我的经验:CRL 文件会越滚越大。我见过一个企业根CA,运行五年后CRL文件超过50MB。每次客户端下载都要等好几秒,用户体验极差。

CRL 的工作流程大致如下:

  1. CA 吊销证书,将序列号写入 CRL
  2. CA 按固定周期(比如每天一次)发布新 CRL
  3. 客户端验证证书时,下载 CRL 并检查序列号
  4. 如果序列号在 CRL 中,证书不可信

CRL 有个关键参数叫 nextUpdate,它告诉客户端下次更新时间。如果 CA 挂了,CRL 过期了,客户端该怎么办?

大多数浏览器会直接认为证书无效。这叫「软失败」——宁可错杀,不可放过。

2.2.2 OCSP(在线证书状态协议)

OCSP 是 CRL 的升级版。它不下载整个黑名单,而是只查一张证书的状态。

打个比方:CRL 像警察局门口贴的通缉令名单,你得自己去看。OCSP 像打电话给警察局问「张三是不是通缉犯?」对方直接回答「是」或「不是」。

OCSP 的优点是实时、轻量。但缺点也很明显——CA 的 OCSP 服务器必须在线,否则客户端查不到状态。

注意:OCSP 请求会暴露用户访问了哪些网站。因为每次查询都要把证书序列号发给 OCSP 服务器。这在隐私敏感场景下是个大问题。后来有了 OCSP Stapling 来解决,这个我们后面章节会细讲。

2.3 吊销原因

CA 不会无缘无故吊销证书。根据 RFC 5280,吊销原因有十几种。我挑最常见的几个说说。

吊销原因 CRL 原因码 说明
私钥泄露 0x0A (keyCompromise) 最常见的原因。私钥被黑客窃取、员工离职带走、存储介质丢失等
CA 私钥泄露 0x0B (cACompromise) CA 自己的根密钥泄露,整个信任链都要重建
证书信息变更 0x04 (superseded) 公司改名、域名变更、组织重组等
停止使用 0x05 (cessationOfOperation) 业务下线、服务器退役、服务关闭
证书被挂起 0x06 (certificateHold) 临时冻结,后续可能恢复或转为永久吊销

我个人觉得,私钥泄露是最棘手的。因为一旦泄露,你根本不知道攻击者已经用它做了什么。我曾在一次安全事件中遇到过:某客户的 TLS 证书私钥被开发人员误传到 GitHub 公开仓库,从上传到发现整整过了 72 小时。这期间有多少流量被中间人攻击?没人知道。

避坑指南:我曾经建议客户在证书申请时就开启 OCSP Must-Staple 扩展。这样浏览器会强制要求服务器提供 OCSP 响应,能有效降低私钥泄露后的风险窗口。后面章节我会专门讲这个配置。

2.4 吊销状态的生命周期

一张证书从签发到最终销毁,状态变化是这样的:

证书状态生命周期 已签发 有效期内 已过期 已吊销 已挂起 虚线表示可逆路径(挂起可恢复),实线表示不可逆路径(吊销和过期不可恢复)

从图上你能看到:证书从「已签发」进入「有效期内」,这是正常状态。到期后进入「已过期」,这是自然终结。

但如果中间出了状况,就会走虚线路径——要么直接「已吊销」,要么先「已挂起」再决定是否吊销。

关键区别:「已过期」和「已吊销」都是终态,不可逆。但「已挂起」是临时状态,可以恢复为有效,也可以转为吊销。挂起常用于员工离职调查期间,先冻结证书,查清楚了再决定。

2.5 为什么吊销机制很重要

你想想看,如果没有吊销机制,会发生什么?

  • 私钥泄露的证书还能继续用
  • 离职员工的证书还能访问公司系统
  • 被黑的服务器还能伪装成合法站点

说白了,证书吊销是PKI信任体系的最后一道防线。没有它,证书就成了一次性用品,出了事只能等它自然过期。

我记得有一次帮客户做安全审计,发现他们有一张服务器证书的私钥早在半年前就泄露了,但因为没配置CRL和OCSP,浏览器一直显示小绿锁。用户以为连接是安全的,其实中间人早就蹲在那里了。这就是典型的「信任假象」。

一句话总结:证书吊销不是锦上添花,而是安全基线。没有吊销机制的PKI,就像没有刹车的车——能跑,但你不敢开快。