证书吊销列表 (CRL) 是一份数字证书列表,这些证书已被颁发证书的机构 (CA) 在预定的到期日期之前吊销,因此不再值得信任。CRL 允许信赖方验证证书是否仍然有效且未被吊销。
数字证书(例如用于保护网站安全的 SSL/TLS 证书)是公钥基础设施 (PKI)的重要组成部分。它们通过在各方之间建立信任来实现互联网上的安全通信和交易。
证书包含所有者身份信息以及用于加密通信的公钥。证书还具有有效期,并由受信任的 CA 进行数字签名。
但是,有时需要在证书到期之前将其撤销,例如:
l 证书所有者的私钥已被泄露。
l 该证书包含不准确的信息。
l 不再需要该证书。
l 证书拥有者违反了 CA 的政策。
CRL 提供了一种公开撤销证书的方法。它们由颁发证书的 CA 定期颁发并进行数字签名。当依赖方收到证书时,他们可以检查 CRL 以验证证书是否未被撤销。
以下是证书撤销列表所涉及的流程:
l 证书吊销:当证书需要吊销时,证书持有者会联系颁发证书的 CA 并请求吊销。CA 会将有关吊销证书的信息添加到其数据库中。
l CRL 颁发: CA 会定期生成并签署 CRL,其中包含该 CA 颁发的所有已撤销但未过期证书的序列号。CRL 包含颁发者信息、颁发日期/时间、下次更新日期以及已撤销证书列表。
l CRL 发布: CRL 发布在公共存储库中,其位置通常包含在证书本身中。想要验证证书的依赖方可以访问存储库。
l 证书验证:当依赖方收到证书时,他们会检查 CRL 存储库并下载 CRL。他们会验证证书是否由 CA 签名,然后检查证书的序列号是否在列表中。这会告诉他们证书是否有效或已被撤销。
l CRL 更新: CA 会定期(通常每隔几个小时)发布新的 CRL。依赖方需要定期检查并下载更新的 CRL,以获取撤销状态信息。
证书吊销列表包含以下关键字段:
l 版本 – CRL 格式的版本号
l 颁发者 – 有关颁发 CRL 的 CA 的识别信息
l 本次更新 – 发布 CRL 的日期和时间
l 下次更新 – 下次 CRL 发布的日期和时间
l 已撤销证书 – 已撤销证书信息列表:
l 序列号 – 已撤销证书的序列号
l 撤销日期 – 证书被撤销的日期和时间
l (可选)证书扩展 – CRL 条目扩展和原因代码等附加信息
l 签名算法 – 用于签署 CRL 的算法
l 签名 – CA 对 CRL 的数字签名,用于验证其真实性
版本:2
发行者:/CN=Xcc Trust OV SSL CA/O=Beijing Xinchacha Credit Management Co., Ltd.
本次更新:2021 年 8 月 31 日 12:00:00 GMT
下次更新:2021 年 9 月 7 日 12:00:00 GMT
撤销的证书:
序列号:345643
撤销日期:2021 年 8 月 28 日 12:00:00 GMT
序列号:234212
撤销日期:2021 年 8 月 29 日 12:00:00 GMT
签名算法:SHA-256
签名:781cf3bd...
当依赖方从实体收到证书时,他们使用 CRL 验证证书的一般过程如下:
l 从证书中提取 CRL 分发点 URL
l 从该 URL 下载 CRL
l 检查 CRL 的签名以验证其真实性
l 检查证书的序列号是否在 CRL 中
l 如果发现序列号匹配,则证书被撤销
l 如果不匹配,则证书有效(未被撤销)
依赖方还可以对照当前日期检查 CRL 的有效期,并在必要时下载更新的 CRL。这可验证状态信息是否过时。
大多数依赖证书确保安全的软件都会在后台处理 CRL 检查。不过,了解 CRL 如何融入证书验证工作流程还是很有用的。
CRL 通常用于在以下情况下检查证书有效性:
l Web 安全 – 浏览器根据 CA 的 CRL 检查来自网站的 SSL/TLS 证书。
l 电子邮件加密 ——电子邮件客户端在显示加密内容之前验证 S/MIME 电子邮件证书。
l 文档签名 ——软件在接受文档之前根据 CRL 验证文档上的数字签名。
l VPN 访问 – VPN 服务器在授予访问权限之前,会根据颁发 CA 的 CRL 检查客户端证书。
l 代码签名——用于对可下载软件、安装程序、二进制文件等进行签名的代码签名证书的软件验证。
任何依赖证书作为身份或数据安全形式的应用程序通常都会使用 CRL 作为证书验证过程的一部分。
使用 CRL 来吊销证书有以下几个好处:
l 广泛支持:CRL 在所有 PKI 软件和平台上都得到普遍支持。
l 行业标准:CRL 在 X.509 等行业标准中是标准化的,并且本机集成到大多数加密库中。
l 单独的撤销状态:将证书与撤销状态分开可简化并加快验证速度。
l 灵活性:CRL 可以通过多种不同的方式托管和分发,提供灵活的实施方案。
l 可扩展性:CRL 将来自 CA 的所有证书的撤销信息合并到单个列表中。
l 延迟:可以缓存 CRL 以减少证书验证期间的网络延迟。
l 安全失败:如果无法检索 CRL,则会拒绝证书,这是安全的默认行为。
CRL 的一些缺点和限制包括:
l 延迟:证书被撤销和依赖方接收更新的 CRL 之间可能会有延迟。
l 性能:检查大型 CRL 可能会对性能产生负面影响,尤其是在受限的设备上。
l 可用性:如果 CRL 由于任何原因不可用,有效证书将被拒绝。
l 存储:CRL 可能会变得非常大,根据 CA 和有效期需要大量存储空间。
l 手动更新:CRL 发布者必须定期手动创建和发布新的 CRL。
l 集中化:CRL 签名密钥的泄露允许攻击者生成伪造的 CRL。
l 隐私:CRL 揭示已被撤销的证书,这些证书可能是敏感信息。
对于 CA 必须多久发布一次更新的 CRL,并没有固定的标准。不过,一些常见的频率包括:
l 每隔几个小时:对于颁发 SSL/TLS 证书的大型 CA,更新的 CRL 可能会每 2-12 小时发布一次。这可确保撤销和状态更新之间的延迟较低。
l 每天一次:中级 CA 可能每天颁发 CRL,在货币和开销之间取得平衡。
l 每周:离线 CA 有时会每周发布一次 CRL,因为快速更新并不重要。
频率还取决于以下因素:
颁发的证书的数量和类型。
l 依赖已撤销证书的后果。
l 预期撤销的次数。
l 可以接受的更新延迟。
大多数 CA 都致力于提供频繁更新的 CRL,以尽量减少潜在问题的发生。发布频率可在 CA 设置时配置。
由于以下限制,CRL 的大小历来受到限制:
l 文件大小限制:CRL 文件大小历来受不同文件系统、协议和软件的限制。例如,超过 4 GB 的 CRL 文件就会出现问题。
l 处理开销:证书验证期间,大型 CRL 需要大量计算资源来解析和处理。这会影响性能。
l 传输延迟:大型 CRL 文件通过网络传输需要更长的时间,从而增加了验证延迟。
l 使用更好的压缩算法来压缩较大的 CRL。
l 为不同类别的证书颁发单独的 CRL。
l 更新基础设施以处理大型 CRL 的传输。
l 在本地缓存 CRL 以避免传输。
l 切换到仅包含自上次完整 CRL 以来的更改的增量 CRL。
l 使用 OCSP 装订将撤销状态附加到证书本身。
l 部署提供实时状态的替代撤销方法(如 OCSP)。
l 设置更短的有效期以便 CRL 更快过期。
l CRL 中仅包含最近撤销的证书,旧证书已过期。
l 使用分区方案将一个大的 CRL 拆分为几个较小的分区 CRL。
l 转向更具可扩展性的数据格式,如 JSON 或 protobuf,而不是 ASN.1/DER。
证书吊销列表是 CA 定期发布的已吊销证书的数字签名列表。CRL 为信赖方提供了一种高效、可扩展的机制来验证尚未吊销的证书。它们有助于确保在整个基础设施中及时禁用受损或不受信任的证书。
尽管 CRL 在可用性和延迟方面存在一些限制,但其简单性、通用性和安全性使其成为全球主要软件和企业信赖的公钥基础设施的基本组成部分。它们将继续在证书验证中发挥关键作用,同时还将与 OCSP 等新兴改进一起发挥作用。
了解 CRL 可以深入了解公钥加密中证书验证和撤销的内部工作原理。