2、证书吊销基础:什么是证书吊销、CRL与OCSP简介、吊销原因
2.1 什么是证书吊销
证书吊销,说白了就是一张数字证书在到期之前,被CA提前宣布作废。
你可能会问:证书不是有有效期吗?为什么还要吊销?
嗯,这个问题我刚开始做PKI时也想过。后来在一次生产事故中才真正理解——证书的私钥泄露了,但证书还有两年才到期。如果不吊销,攻击者就能拿着泄露的私钥冒充你的服务器。你说可怕不可怕?
所以,证书吊销就是PKI体系里的紧急刹车机制。它让CA能在证书到期前,强制终止一张证书的信任效力。
核心要点:证书吊销 ≠ 证书过期。过期是自然失效,吊销是人为提前终止。两者在信任链上的效果相同——证书不再可信。
2.2 吊销的两种主流机制
目前业界就两种主流方案:CRL 和 OCSP。我分别说说。
2.2.1 CRL(证书吊销列表)
CRL 是个黑名单。CA 把所有被吊销的证书序列号写进一个列表,定期发布出来。客户端拿到证书后,去下载这个列表,查一下序列号在不在里面。
听起来简单吧?但实际用起来坑不少。
我的经验:CRL 文件会越滚越大。我见过一个企业根CA,运行五年后CRL文件超过50MB。每次客户端下载都要等好几秒,用户体验极差。
CRL 的工作流程大致如下:
- CA 吊销证书,将序列号写入 CRL
- CA 按固定周期(比如每天一次)发布新 CRL
- 客户端验证证书时,下载 CRL 并检查序列号
- 如果序列号在 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,就像没有刹车的车——能跑,但你不敢开快。