有效期内的证书也可能是废的
证书被签发后,私钥泄露、主体信息变更、误签发等情况需要让它提前失效,此时靠的不是有效期而是吊销机制:CRL 是 CA 定期发布的吊销列表,OCSP 是按单张证书实时查询状态的在线服务。两者互补——CRL 体积随吊销量增长且更新有周期,OCSP 实时但会暴露访问者查询行为并增加延迟,因此生产环境常用 OCSP Stapling 由服务器代取并随握手下发。
查询与验证示例
查询与验证示例
# 1 向 OCSP 响应器查询单张证书状态
openssl ocsp -issuer ca.crt -cert server.crt -url http://ocsp.example.com -resp_text -noverify
# 2 查看 CRL 内容(发布者、更新时间、吊销条目)
openssl crl -in ca.crl -noout -text | head -20
openssl crl -in ca.crl -noout -lastupdate -nextupdate
# 3 按 CRL 校验证书链(吊销即失败)
openssl verify -crl_check -CRLfile ca.crl -CAfile ca.crt server.crt
# 4 查看服务器是否提供 OCSP Stapling 响应(TLS 1.2/1.3 通用)
openssl s_client -connect example.com:443 -servername example.com -status </dev/null 2>/dev/null | head -20CRL 与 OCSP 对比
| 维度 | CRL | OCSP |
|---|---|---|
| 查询方式 | 下载整份吊销列表,本地匹配 | 按单张证书在线查询 |
| 时效性 | 依赖发布周期,可能滞后 | 实时,返回 good/revoked/unknown |
| 开销 | 列表随时间增长,客户端需缓存 | 每次查询产生请求,增加握手延迟 |
| 隐私 | 本地查询,不暴露访问行为 | CA 可获知谁在查询哪张证书 |
| 可用性风险 | 列表不可下载时的策略需明确 | 响应器不可用时需决定放行或拒绝 |
| 优化手段 | 使用增量 CRL 减小体积 | OCSP Stapling 由服务器代取并缓存 |
运维要点
- 明确吊销检查失败时的策略:放行(软失败)可用性优先,拒绝(硬失败)安全优先,必须写进规范而不是由客户端默认行为决定
- 同时监控到期与吊销:到期前 30 天提醒,吊销事件发生后核查相关系统的证书是否已撤除
- 自建 CA 或私有 PKI:保证 CRL 的发布周期与留存,OCSP 响应器要具备冗余与监控
- 开启 OCSP Stapling 并监控装订有效性:配置错误时表现为装订缺失,客户端仍会回退到直连查询
- 证书清单化管理:把证书、私钥、用途、责任人与到期时间登记在台账里,与监控联动
- 客户端兼容性核对:部分老旧客户端不支持吊销检查或对 OCSP 响应格式敏感,改造前做兼容性验证
OpenSSL 命令行验证用于排查与取证,生产系统仍需在应用或网关侧启用吊销检查;仅在浏览器地址栏看到锁形图标,不代表吊销状态被检查过。
把「吊销检查失败即放行」设为全局默认,会让吊销机制在真实攻击中失效;一旦 CA 响应器被劫持或阻断,所有被吊销证书仍可继续使用。