什么是OCSP、CRL?

一句话概括:OCSP(在线证书状态协议)和 CRL(证书吊销列表)是 PKI 体系中用于检查 SSL/TLS 证书是否已被吊销的两种机制,确保浏览器只信任仍在有效期且未被作废的证书。

为什么需要证书吊销机制?

SSL/TLS 证书在有效期内可能因各种原因需要提前作废(吊销),例如:

当证书被吊销后,浏览器需要一种机制来实时查询该证书是否仍然有效,这就是 OCSP 和 CRL 的作用。

CRL — 证书吊销列表

全称:Certificate Revocation List(证书吊销列表)

类型:离线机制(批量下载)

工作原理

CA 机构维护一份被吊销证书的序列号列表(CRL),并定期发布到互联网上。浏览器在验证证书时,需要:

  1. 从证书中获取 CRL 分发点(CDP)的 URL
  2. 下载该 CRL 文件
  3. 检查当前证书的序列号是否在 CRL 中

CRL 的特点

CRL 的缺点

OCSP — 在线证书状态协议

全称:Online Certificate Status Protocol(在线证书状态协议)

类型:在线机制(实时查询)

工作原理

OCSP 提供了一种实时查询单张证书状态的机制:

  1. 浏览器从证书中获取 OCSP 响应器的 URL
  2. 浏览器向 OCSP 服务器发送请求,查询该证书的序列号
  3. OCSP 服务器返回证书的实时状态(Good / Revoked / Unknown)
  4. 浏览器根据响应决定是否信任该证书

OCSP 响应代码

OCSP 的优点

OCSP 的缺点

OCSP Stapling

OCSP Stapling(OCSP 装订)是 OCSP 机制的重大改进,由服务器预先从 CA 的 OCSP 响应器获取证书状态,并在 TLS 握手期间将其直接发送给浏览器。浏览器无需再向 OCSP 服务器发起额外请求。

工作原理(对比)

传统 OCSP 流程:

浏览器 ──→ CA 的 OCSP 服务器(查询证书状态)──→ 等待响应 ──→ 继续 TLS 握手
                          ↑
                   额外网络请求,暴露域名

OCSP Stapling 流程:

服务器 ──→ CA 的 OCSP 服务器(定期预取)──→ 缓存 OCSP 响应
                                                              ↓
浏览器 ──→ 服务器(TLS 握手时直接收到已装订的 OCSP 响应)
          无需额外请求,隐私安全,性能更优

OCSP Stapling 的优势

服务器配置建议

生产环境建议同时启用 OCSP Stapling 和 CRL/OCSP 作为双重保障。

CRL vs OCSP vs OCSP Stapling 对比

对比项 CRL OCSP OCSP Stapling
机制类型 离线(批量下载) 在线(实时查询) 服务器预取(混合)
实时性 低(有更新延迟) 高(实时查询) 高(定期刷新)
网络请求 下载大文件 CRL 每次连接查询一次 服务器定期获取
用户隐私 中(下载 CRL 暴露域名) 差(直接暴露访问域名) 好(无用户侧请求)
性能影响 大(文件大,解析慢) 中(额外连接开销) 小(无额外延迟)
可用性 好(本地缓存) 依赖服务器 好(服务器侧保障)

证书吊销相关的扩展

除了 CRL 和 OCSP,还有以下证书吊销相关机制:

总结

CRL 和 OCSP 是两种核心的证书吊销检查机制,前者离线批量查询,后者在线实时响应。在生产环境中,推荐同时启用 OCSP Stapling(服务器端)和 CRL/OCSP(客户端兜底)双重保障,确保在私钥泄露等紧急情况下能快速阻断不信任连接。