CRLCertificate Revocation List,证书吊销列表)是 CA(证书颁发机构) 定期发布并签名的已吊销证书序列号列表,用于判断某张 数字证书 是否不应再被信任。

核心问题

证书可能在过期前就需要失效,例如私钥泄露、员工离职、设备报废、域名控制权变化或误签。CRL 让客户端可以下载一份由 CA 签名的列表,在本地检查证书序列号是否已被吊销。

核心机制

CRL 通常包含:

字段作用
issuer发布这份 CRL 的 CA
thisUpdate本次列表发布时间
nextUpdate下次预期更新时间
revoked certificates已吊销证书序列号、吊销时间和原因
signatureCA 或授权 CRL 签发者对列表的签名

验证逻辑可以写成:

verify_signature(crl, issuer_public_key)
require now between crl.thisUpdate and crl.nextUpdate
reject if certificate.serial in crl.revoked_certificates

CRL 是批量发布模型。客户端拿到列表后可以离线检查,但列表可能很大,而且状态新鲜度取决于发布周期和缓存策略。

工程用途

  • 企业内网、离线环境或设备侧批量检查吊销状态。
  • TLS、VPN、Wi-Fi、mTLS 等证书体系的撤销机制之一。
  • 合规审计中保留吊销原因、时间和发布记录。
  • OCSP 互补:CRL 适合批量和离线,OCSP 适合单证书在线查询。

边界与常见坑

  • CRL 不是实时状态:发布周期越长,吊销生效延迟越大。
  • 列表过大影响性能:大型 CA 的 CRL 可能很大,需要缓存和增量策略。
  • 过期 CRL 不能继续信任nextUpdate 已过时意味着吊销状态不新鲜。
  • 必须验证 CRL 签名:否则攻击者可以伪造“空吊销列表”。
  • 吊销检查失败如何处理是安全策略:软失败提高可用性但降低吊销效果,硬失败更安全但可能造成中断。

相关术语