为什么我们不信任最近过期的 SSL 证书?

信息安全 tls 证书 公钥基础设施 证书颁发机构
2021-08-20 03:43:27

每个 SSL 证书都有一个到期日期。现在假设某个站点的证书在一小时前或一天前过期。默认情况下,所有软件要么拒绝连接到该站点,要么发出安全警告。

最近发生在 Windows Azure 存储上,并且由于依赖服务中的大多数软件默认拒绝连接许多服务,因此经历了严重的退化。

现在这里的逻辑是什么?我的意思是一天前证书是有效的,每个人都乐于使用它。现在一天后它正式过期,没有人喜欢它了。

我已经阅读了这个答案,但对于这个特定的边缘情况,我觉得它没有说服力。每个安全模型都有一个威胁模型。

这里的威胁模型是什么?从现在到一天前,如果证书被视为无法使用,以至于我们甚至拒绝连接到该站点,会发生什么?

4个回答

当证书过期时,其吊销状态不再公布。也就是说,证书可能在很久以前就被吊销了,但它不会再包含在 CRL 中。证书到期日期是包含 CRL 的截止日期。这就是证书过期的官方原因:保持 CRL 大小有界。

(非官方原因是让证书所有者支付年费。)

因此,您不能信任过期的证书,因为您无法检查其吊销状态它可能在几个月前就被撤销了,你不会知道的。

一个好问题。最简单的答案是,有一个到期日期可以确保您每隔一段时间进行一次“审核”。如果没有到期日期,并且有人停止使用证书(并保护私钥),那么没人会知道。但是,通过设置到期日期,您可以确保用户回到向他们出售 SSL 证书并支付更多钱的公司,错误,我的意思是,进行审计并重新验证为他们声称的人或服务是(我会尽量避免对当前互联网安全模型的咆哮)。

那么问题就变成了:如果您将有一个忽略过期证书的宽限期,它会持续多久?一天?一周?一个月?在某些时候,您只需要停止信任证书即可;如果您在到期后的第二天提出这一点,您仍然可以问自己:“今天和昨天之间会发生什么?” 你陷入了一个循环。

从本质上讲,您是对的:人们不会在到期日一到就神奇地停止保护他们的私钥(或者他们可能很久以前就停止保护它们了,没有人知道,因为他们没有撤销它们并且他们没有还没过期)。到期日期没有说明证书的安全性,但是如果您没有截止日期,您将永远不会知道证书可能会被遗忘,而您至少知道这么多。

如果有一个通用的五天宽限期,那么直到五天后没人会注意到证书的到期,给您留下与立即拒绝过期证书相同的净效应。正是 SSL 连接停止工作的事实造成了压力。

我怀疑 SSL 客户端应用程序大声警告即将到期的证书会更有效率,这样这些应用程序的用户就可以提前向他们的服务提供商施压。

我同意当前的系统不是最理想的。

对于即将到期的证书(“绿色”是有效证书,“红色”是过期证书),一个更好的证书系统可以有一个“黄色”状态期,在 1 个月内到期。每个 N 年证书将在 N 年 + 1 个月后过期,但理想情况下它们将在 N 年期间更新。但是,在上个月,每个使用证书的应用程序都应该向用户显示一个温和的警告指示。对于网络浏览,您可以执行一些操作,例如将 URL 着色为黄色而不是绿色 - 使用悬停/单击消息效果:

本网站的证书将于 2013 年 3 月 25 日到期,并应在到期前由域名所有者更新。该证书仍然完全有效,并且在此日期应完全受信任,但如果到那时证书未更新,依赖此证书的应用程序将在 2013 年 3 月 25 日停止工作。

这会是完美的吗?可能不会,因为某些应用程序可能不会将这些消息传递给用户,并且仍然会达到到期日期。此外,必须在标准中就证书到期前多久更新证书(一天?一周?两周?一个月?)达成一致。但这似乎是一种进步。

(当然,我确实同意微软在他们让他们的 Azure 证书过期时真的放弃了——这是一个试图支持企业应用程序的平台无能的标志)。