系统时间和证书

信息安全 tls 证书 攻击预防
2021-08-29 08:26:35

最近我不小心将系统时间更改为不同的月份,然后我浏览了一个安全站点。我收到来自 Google Chrome 的警告,其中提到了我的系统时间并说证书无效。

如果我有一个有效的证书,在已经过去的一段时间内可以使用,并且我可以更改系统时间,会发生什么?可以正常工作吗?反正会有警告吗?

解释将受到欢迎。

4个回答

验证证书需要检查多个日期,这些日期与进行验证的系统(即您的台式机或笔记本电脑)已知的“当前时间”有关。特别是,您的系统将尝试获取新的撤销信息(CRL)。如果您的系统时钟关闭,它不会将任何可以下载的 CRL 视为“新鲜”;它可能会发出可怕的警告,特别是如果它看到“来自未来”的 CRL。

此外,在SSL/TLS中,客户端和服务器相互通知他们当前时间的概念。再次,可以警告差异。

总而言之,更改时钟以接受已过期的证书可能“有效”,但不能“正常工作”。当然,这取决于您的浏览器对证书验证的宽容程度,因此针对您的特定问题的最佳行动方案是对其进行测试创建您自己的 CA,颁发过期日期为过去的服务器证书,在浏览器中将您的 CA 安装为受信任的 CA,调回时钟,连接到使用过期测试证书的测试服务器,然后看看会发生什么。无论如何,这对于生产用途来说几乎不是一个合理的设置(要求您的客户将他们的时钟拨回去有点,比如说,商业上的次优)。

SSL 证书的主要目的是向客户端证明他们已连接到他们尝试访问的正确站点。由客户根据自己的时间检查证书的有效时间。由于您的时间提前了一个月,您可能浏览到一个即将更换其 SSL 证书的站点,因此您的浏览器认为它无效。如果您更改服务器上的时间,服务器会认为没问题,但任何连接的客户端都将拥有实际时间并拒绝证书过期。

如果您更改系统时间,如果您使用的浏览器或软件使用本地系统时间作为时间源,则证书将被视为无效。有些软件使用远程系统作为时间源,因此不受本地时间变化的影响,但这种情况很少见。

这样做的原因是因为可以通过暴力破解证书,但这需要时间和大量的 CPU 周期。通常您会看到公共 SSL 证书的时间跨度为 1 年,但大多数大型供应商(VeriSign、Thawte 等)的时间跨度可能高达 4 年。该理论是,与公钥(公钥=证书)关联的私钥“不可能”在 1 年内被暴力破解。因此,证书颁发机构不会说此证书永远有效,因为在 10 年内很有可能会被破解,因为1 - 10 年过去了,2 - 假设 CPU 会随着时间变得更强大继续(摩尔定律/罗斯定律)。

为了更直接地回答您的问题 - 是的,证书将“正常工作”,如果您的意思是它会加密您的通信,只要您接受这不是合法服务器的风险(风险 = 警告)(可能冒充或通讯拦截/中间人)。如果您将时钟改回正确的时间,并且没有任何警告(并且您没有说过永久允许浏览器中的异常),那么您可以合理地确定您不是攻击的受害者。不能保证的是 SSL 的“身份验证”部分,如果要求您单击“接受”,则服务器由证书颁发机构担保。

如果您想了解更多详细信息,请告诉我。我不确定你还会对什么感兴趣。

正如前面的答案所建议的那样,运行了具有不同时间设置的模拟。(在证书到期日之前提前本地时钟)。开始了!

更改客户端时间后的 SSL