行业新闻与博客

CRL 解释:什么是证书吊销列表?

需要吊销证书吗?有一个清单…

X.509 数字证书是公钥基础结构(PKI)和 Web 安全的整体组成部分。但是,如果其中一个证书或其密钥出了问题,怎么办?可以这么说,任何证书都可以在砧板上找到自己的头,或者将其添加到证书吊销列表(CRL)中更为人所知。



我们已经看到批量证书吊销以前发生过。例如,由于证书的序列号是 63 位而不是 64 位,因此 Apple,Google 和 GoDaddy(以及其他一些 CA)去年吊销了数百万个证书。而就在今年年初,我们看到“ Let's Encrypt”由于其代码中的错误而面临着大规模证书撤销的麻烦。



但是,证书撤销到底是什么?它如何工作?什么是证书吊销列表?而且,CRL 在整个网站安全中扮演什么角色?



定义 CRL:什么是证书吊销列表?

关于什么证书吊销列表(或 CRL)的问题的答案取决于您询问的人。例如,美国国家标准技术研究院(NIST)将 CRL 定义为“由认证中心创建并进行数字签名的已撤销公钥证书的列表。”



不仅如此。Internet 工程任务组(IETF)RFC 5280 提供的更多技术性答复将 CRL 描述为带时间戳和签名的数据结构,证书颁发机构(CA)或 CRL 颁发者定期发布该 CRL 以传达受影响的数字证书的吊销状态。根据提供商的不同,每小时,每天或每周都会提供证书吊销列表。



但是,这种描述也不是完全正确。就个人而言,我更愿意将证书吊销列表(CRL)定义为 CA 在指定的到期日期之前将其吊销的 X.509 数字证书的黑名单。重要的是要注意,但是,此列表不包括过期的证书。此外,在某些情况下,第三方实体会代表 CA 发行和维护 CRL。这意味着 CRL 颁发者并不总是与颁发吊销证书的 CA 相同。



但是,在我们深入了解证书吊销列表的全部内容之前,我们首先需要解决证书吊销的总体含义。



证书撤销的目的

顾名思义,证书吊销是一个将无效证书和不可信证书与有效可信证书区分开的过程。基本上,这是 CA(或 CRL 颁发者)知道一种或多种数字证书由于某种原因或其他原因不再值得信赖的一种方法。当他们吊销证书(此过程有时称为 PKI 证书吊销)时,他们实际上会在证书的到期日期之前使该证书无效。



因此,如果 CA 需要为您的网站撤消证书,它会使 Google Chrome 浏览器向您的网站访问者显示一条可爱的警告消息:







                                                       不用说,这绝对不是您企业网站的好外观。此消息并不能完全激发用户的温暖和快乐的信任感……也不应该。



证书透明度日志与证书吊销列表:它们不一样吗?

有时对于证书透明性(CT)日志是否与 CRL 相同,或者它们是否具有相同的用途,感到困惑。因此,让我直接回答这个问题:不,CT日志和 CRL 不是一回事。它们都处理 X.509 数字证书,但是它们是两个单独的过程,分别提供两个单独的功能。



证书透明日志是 CA 记录其为单个域颁发的每个证书的一种方法。实际上,CT日志是您域的证书清单。但这并不能告诉您证书是否被吊销。另一方面,CRL 是关于每当客户吊销证书时通知他们。但是它们不包括 CA 为您的域颁发的每个证书的列表。



CA 为什么要向 CRL 添加证书?

这个问题没有一个万能的答案。CA 可以出于以下原因之一撤销您的网站的证书:



有人泄露(或怀疑破坏了)证书的私钥。(这是最常见的原因。)




  • CA 错误地颁发了证书,并颁发了新证书来替换它。

  • CA 本身已受到威胁。

  • 证书中列出的组织详细信息(例如,组织的名称)已更改,并且 CA 需要重新颁发证书以反映该更改。

  • 证书是非法的或已使用盗窃的密钥进行了欺诈性签名。(你这个顽皮的男孩 / 女孩,你。)



但是,证书被吊销的频率是多少?我们将使用 SANS Internet Storm Center(ICS)来回答该问题。这是最近一个月和去年的最新证书吊销统计信息:







图片来源:SANS ICS。此数据显示过去一个月(2020年6月20日至 2020年7月20日)的每日证书吊销率。注意:此数据是在 2020年7月20日捕获的,可能无法反映当天撤销的证书的准确数量。







图片来源:SANS ICS。此数据显示过去一年(2019年7月20日至 2020年7月20日)的每日证书吊销率。注意:此数据是在 2020年7月20日捕获的,可能无法反映最后一天撤销的证书的准确数量。但是,您会注意到,撤销的最大高峰(11,322)是最近在 2020年7月12日发生的。



为什么需要证书吊销列表

当 CA 颁发数字证书时,他们期望该证书在其整个生命周期内都在使用。(证书的有效期目前为两年,但对于 2020年9月1日或之后颁发的证书,证书的有效期将减少为一年,或更具体地说,为 398 天。)



但是,并非所有证书都能在整个时间范围内保留。他们有时会提早被吊销,那是他们加入 CRL 的时间。这与证书过期的过程不同,证书过期会使 CA 失效,浏览器和操作系统会自动拒绝。(因此,为什么不将它们添加到证书吊销列表中。)



可以想象,如果客户端不知道特定证书被吊销,证书吊销会导致很多问题。(您之前看到的“您的连接不是私有的”警告消息是这些问题之一的完美示例。)因此,为了使证书吊销更容易跟踪,CA(和 CRL 颁发者)将它们添加到其 CRL 中。



证书吊销列表中包含什么

证书吊销列表是不可信的 X.509 数字证书的列表。尽管 SSL / TLS 证书或所谓的网站安全证书是最常见的证书,但 CRL 也可以包括代码签名证书,并且我相信电子邮件签名证书(或称为 S / MIME 证书)。



基本上,这些是受信任的 CA 在其正式到期日期之前吊销的证书。



但是证书吊销列表可以包含哪些信息?CRL 条目可以包括以下任何一项:



证书的序列号。

证书的签名算法。

通用名称(CN)。

证书的扩展名。

撤销日期和时间。

CRL 发行者的名称。

下一个 CRL 生成的日期。

这是 Sectigo(以前称为 Comodo CA)CRL 的示例:







这是 Sectigo(以前称为 Comodo CA)的证书吊销列表的屏幕快照。

重要的是要注意,根据 IETF RFC 5280,一旦将证书添加到列表中,它基本上就是永久性的固定装置:



“在撤销通知之后,条目将作为下一次更新的一部分添加到 CRL。除非该条目出现在已撤销证书的有效期之后发布的一个定期排定的 CRL 中,否则不得将其从 CRL 中删除。”



证书吊销状态检查的工作方式

您可以使用许多免费的在线工具来检查证书的吊销状态。例如,有 certificate.revocationcheck.com。当我输入 SSL Store 的 URL 时,它显示的是:







但是,证书吊销检查过程对于客户端和 Web 服务器如何工作?让我们以该网站上的 SSL / TLS 证书为例。



在 Web 浏览器(客户端)建立与 TheSSLStore.com 的安全,加密连接之前,您的客户端首先需要知道其连接的服务器是否合法。它是通过检查我们的 SSL / TLS 证书来实现的。



但是您的客户如何知道我们的服务器提供的证书是否有效?毕竟,就您的客户所知,我们是一个假冒 SSL 商店的欺诈性网站,而这是一个冒名顶替的网站。(当然,这样做意味着网络犯罪分子破坏了网站或 Web 服务的证书或私钥,或者如果出于某种原因(不太可能)以不正确的方式颁发了证书,则 CA 必须将其撤消。 )



那么,客户如何知道证书是有效的还是已被吊销的?客户端可以通过两种方式执行此操作:




  • 它手动检查证书吊销列表中所涉及的证书。

  • 它将 OCSP 请求发送到 OCSP 响应者,以通过 CA 的吊销服务器检查特定证书的吊销状态。

  • 客户端如何检查 CRL 和 OCSP

  • 在这两种方法中,检查证书吊销状态的责任在于客户端。基本上,客户端负责在连接证书之前检查证书是否已吊销。



基于证书吊销列表的证书吊销状态检查

要使用 CRL 检查证书的状态,客户端请与 CA(或 CRL 颁发者)联系,并下载其证书吊销列表。完成此操作后,它必须在整个列表中搜索该单个证书。这不仅麻烦,而且速度很慢。为了提高性能,客户端只能每 24 小时左右下载更新的 CRL。







这说明了使用证书吊销列表时证书吊销检查过程如何进行。

基于 OCSP 的证书吊销状态检查

在第二种状态检查方法中,客户端向 OCSP 响应者发送 OCSP 请求,以检查证书的实时状态。然后,OCSP 响应者会发回三个证书状态响应之一(良好,已吊销或未知),然后客户端可以做出相应的反应。







这说明了使用在线证书状态协议(OCSP)时证书吊销检查过程如何进行。

基于客户端的证书吊销状态检查的优点和缺点

OCSP 的优点是它比传统的 CRL 检查过程要快,并且还提供有关证书吊销状态的最新信息。但是在某些情况下,CRL 可能更有利(主要是在 OCSP 服务器出现故障时-甚至只是暂时的)。



但是,两者都有缺点:



CRL 列表增加,CA 发布新列表。由于基于 CRL 的验证方法要求对每个连接进行证书吊销状态检查,因此 CRL 颁发者或 CA 可能会发布新列表,而您将错过新吊销的证书。这不利于可伸缩性。

这两种方法对于客户端来说都是资源密集型的。它们占用了大量资源,并且也增加了延迟。这导致更糟糕的用户体验。毕竟,客户端每次必须在该列表上通过很多证书。

您的隐私保护渠道存在一些漏洞。使用 OCSP 时,您对网站的安全使用并不像您想象的那样安全。为什么?因为浏览器告诉 CA 服务器谁正在访问哪些网站。因此,如果您不希望任何人(包括 CA)知道您对可收藏的小雕像或猫视频的喜爱,那么用户请当心。

CRL 和 OCSP 依赖于 CA 的基础结构。如果您使用的 CA 不可靠,并且服务器停机时间或可用性问题很多,那么依赖这两种做法就会更加麻烦。

但是,主要的危险信号是浏览器的 CRL 检查软故障策略。我的意思是,当客户端检查 CRL 列表,或者他们向 OCSP 响应者发送消息并获得“未知”响应时,某些浏览器可能会认为证书有效并且允许连接,而不考虑潜在的危险。 。



输入 OCSP 装订

但是,还有第三个选项,它是基于 Web 服务器的证书吊销状态检查,称为 OCSP 装订。OCSP 装订负责在 Web 服务器上而不是最终用户的客户端上执行 OCSP 请求。这是一个资源消耗较少的过程,并且减轻了客户端的负担,从而为最终用户提供了更加无缝的体验。它还避免了基于客户端的 OCSP 状态检查方法遇到的数据泄漏问题。



本质上,这是对传统 OCSP 的新改进。



基本上,通过 OCSP 装订,Web 服务器将与 CA 的吊销服务器保持持续通信。它标记和缓存最新的 OCSP 响应,以便可以将其“装订”(附加)到客户端的 SSL / TLS 握手请求响应。这有助于确保 CA 服务器短暂中断期间的覆盖范围。



但是,关于 OCSP 装订还有很多要了解的内容。因此,本周晚些时候,我将在本周的另一篇文章中讨论 OCSP 装订-以及一般的在线证书状态协议,因此敬请关注。(插入一个无耻的“立即订阅我们的博客”消息。)



总结证书吊销列表的主题

如您所见,关于证书吊销列表有很多知识。它们就像圣诞老人的“顽皮和好”列表中的网络安全一样-您知道谁是好人(因为他们使用有效的 X.509 证书),谁应该得到煤炭(因为他们没有)。



CRL 对于帮助您的客户确定连接到 Web 服务器是否安全非常有用。但是,它们并不完美:



证书吊销列表笨拙,缓慢且繁琐,客户端无法持续下载和排序。

无论您的客户端是下载 CRL 列表来检查每个证书,还是依赖 OCSP 响应程序来对吊销服务器进行实时证书状态检查,仍然有可能出问题并且您依赖旧数据。

OCSP 装订是一种更好的选择,它可以减少延迟,并将 CRL 吊销检查的责任放在 Web 服务器(而不是客户端)上。

我希望本文能为您提供有关证书吊销列表的清晰信息,并为您阐明证书吊销状态检查过程。



与往常一样,随时发表评论以分享您的想法和见解。



本文由机器译制

需要帮助吗?联系我们的支持团队 在线客服