如何验证网站是否撤销了其旧 SSL 证书密钥?

信息安全 tls 证书 心血来潮 证书吊销
2021-08-19 23:07:56

通过阅读多个来源并观看Security Now's How the Heartbleeds,我了解到建议使用以下过程以免受 Heartbleed 漏洞的影响(假设用户的浏览器对已撤销的 TLS 证书做出正确反应,我知道可能不会现在所有浏览器都是如此,但我们暂时把这个问题放在一边):

  1. 升级到补丁版本的openssl
  2. 重新生成 TLS 证书 ( rekey )
  3. 撤销之前的证书

执行前面的步骤将:

  • 防止利用 Heartbleed 漏洞窃取新密钥(因为 1. 和 2.)
  • 使用被盗密钥保护用户免受中间人攻击(因为 3.)

现在,我知道有多种工具可以查看网站当前是否不安全(1. 未更新)或潜在易受攻击(2. 未更新密钥),但我如何知道网站是否撤销了其先前的证书?

我相信我可以使用工具(我假设使用 OCSP 或 CRL)检查特定密钥(如果已知),但是有没有办法访问网站的先前密钥?

这纯粹是出于好奇,但我想验证一个网站何时说"we are safe now"他们确实撤销了他们的证书以及更新 openssl 并重新生成密钥。

非常感谢您宝贵的时间,并原谅我在信息安全领域缺乏知识而造成的潜在错误。

1个回答

我发现这个问题很有用,因为实际上很难确定证书是否以正确的方式被撤销。

  • 如果您知道谁颁发了原始证书,您可以下载 CRL(其中仅包含序列号和吊销日期,而不是吊销的证书本身)。如果不是,那你就不走运了。
  • 如果您知道旧证书的序列号,您可以检查它是否在 CRL 列表中。如果您不知道原始序列号,您将没有机会检查撤销。
  • 如果您发现证书已被吊销,您仍然不知道所有者是否只是重新使用其旧的并且可能已损坏的公钥/私钥对再次与新证书一起使用。如果没有旧证书,您将永远不会知道。

所以最好的办法是所有者可以使旧证书(但不是私钥)可访问,以便其他人可以验证验证的正确性。

最后,它再次表明,当前的 PKI 架构,而不仅仅是 TLS 实现被破坏了。你有没有想过为什么新的浏览器版本会解决所有主要的 CA 问题(DigiNotar + Comodo 2011,IGC/A 2013)?因为最初设计的撤销不能正常工作。