更新证书时我应该更改私钥吗?

信息安全 tls 证书 密钥管理
2021-08-22 02:43:14

当我想要为我们的 Web 服务器更新 SSL 证书时,我的安全部门坚持让我(系统管理员)制作一个新的私钥。他们声称这是最佳做法,但我的谷歌搜索尝试未能验证他们的说法。正确的方法是什么?

我发现的最接近的是我应该每年重新生成新的 SSL 私钥吗?,但它并没有真正解释为什么有必要更改密钥。

我知道在我做的时候改变钥匙没什么大不了的,但我从来没有在没有正当理由或解释的情况下只做别人告诉我的事情:)

4个回答

我会说他们的建议不是一个非常可靠的建议,除非您使用的密钥大小非常小——在这种情况下,您会遇到完全不同的问题。

大多数人估计,一个 2048 位的密钥至少可以保证您在 2020 年之前的安全,如果不是更长的话。如果您使用 1024 位或更少的密钥运行,则您低于标准,我建议立即更新到 2048 位。如果您当前使用的是 1536 位密钥,那么您应该可以安全使用一两年。

当然,这都是学术上的。有人能够(或倾向于)在一年内破解您的 1024 位 SSL 密钥的可能性极低。

如您链接的问题中所述,有好处也有坏处。

好处

  • 给攻击者更少的时间来破解密钥。无论如何,如果您使用合理的密钥大小,那将是一个有争议的问题。
  • 阻止任何可能泄露您的私钥的作恶者。不太可能,但未知。
  • 让您有机会增加密钥大小以领先于曲线。

缺点

  • 除非您使用非常小的密钥,否则不会真正为您提供任何针对密钥破解的具体保护。
  • 浏览器的 SSL 检查/反 MitM 插件可能会提醒用户密钥已更改。在我看来,这是一个弱点——大多数用户不会使用它。
  • 可能会导致与更严格的HSTS政策和实施相关的临时警告。
  • 它需要工作。你可能正在做其他事情。

因此,双方都有一些薄弱的原因,以及您可能需要考虑的一些极端情况。只要您使用 2048 位或更高位的密钥,我会稍微倾向于“除非您需要,否则不要这样做”的角度。

最重要的是问他们为什么他们认为这是必要的 - 可能是您有一个与基础设施相关的原因来更新我们不知道的密钥。如果他们不能提出一个可靠的论点(“为什么不呢?”不是真的有效),那么他们可能应该重新评估他们的建议。

更改私钥不是最佳做法,而是普遍做法;实际上,它与安全性关系不大,而与普通 CA 处理证书更新的方式有很大关系,即大多数时候就像新证书一样,带有新的私钥生成。在 CA 方面,更简单的是不为更新做任何特别的事情。因此养成了更换钥匙的习惯。

从安全的角度来看,即使情况相似,相同的系统管理员也不会坚持每年为他们的 SSH 服务器生成新密钥。或者,更准确地说,更改 SSH 服务器密钥有点不方便,因为它会破坏.ssh/known_hosts客户端的文件。因此,习惯上避免更改 SSH 服务器密钥。因此,SSH 服务器密钥是长期存在的。没有人真正跳过心跳。他们为什么要担心具有相似加密强度的 SSL 密钥?

最佳做法是在技术进步使您的密钥有些脆弱时更换密钥,同时考虑到普遍的偏执(通常称为“出于合规性原因”);所以你会认为现在,在 2013 年,应该用更长的密钥替换 1024 位 RSA 密钥,即使我们还远不能破解这样的密钥。如果您的 RSA 密钥是 1536 位或更宽,则没有加密的理由来创建一个新密钥(但是,在 CA 方面,更改它可能更方便)。

答案不是技术或加密,而是关于人。随着工作变化(听说过心怀不满的管理员?)、服务器迁移、DR 测试、备份和诸如此类的私钥可能会变得有点暴露。

鉴于上述情况,密钥更新是一种安全最佳实践。

不要担心有人会考虑您的 RSA 密钥。对于州级对手来说,考虑使用 1024 位 RSA 密钥可能是可能的,但即使对他们来说,它也可能不具有成本效益。几十年后可能无法分解 2048 位密钥。

我主要担心你的私钥在服务器泄露中被盗。过去妥协的收益有点不清楚,因为攻击者可能在您的服务器上存在持久性恶意软件。因此,您需要重新安装服务器以保护新密钥。

另一个问题是一些弱 SSL 套件(主要是RSA基于加密的系列)使用您的长期密钥来保密,而不仅仅是用于身份验证。通过这些,您的服务器密钥的妥协允许解密与您的服务器使用如此弱套件的所有过去的 SSL 通信。使用新密钥并安全地删除旧密钥可以限制此类攻击的影响。

因此,如果您的服务器仍然启用了这些套件,我强烈建议您定期更改密钥。