我如何对我们网站的 SSL 密钥保密?

我如何对我们网站的 SSL 密钥保密?

我想对我们网站的 SSL 密钥保密。它存储在 2 个 USB 上,一个放在保险箱中,另一个由我保管。而且我是唯一一个将它应用到 Web 服务器的人,因此它是完全安全的。

除了...

至少在 IIS 上,您可以导出密钥。因此,任何管理员都可以获得密钥的副本。有什么办法可以解决这个问题吗?或者根据定义,所有管理员是否都拥有所有密钥的完全访问权限?

更新: 我确实有完全信任的系统管理员。导致这种情况的原因是其中一人辞职(他来我们公司要花一个小时,去新公司要花 5 分钟)。虽然我信任这个人,但就像我们在有人离职时禁用他们的 Active Directory 帐户一样,我认为我们应该有办法确保他们不会保留使用我们 SSL 的能力。

我觉得最简单的情况是,如果我是唯一拥有它的人。我们的证书将于 1 月到期,所以如果可以的话,现在是改变做法的时候了。根据答案,我们似乎不能。

因此,这又引出了一个新问题 - 当有权访问证书的人离开时,标准做法是获取新证书并撤销现有证书。或者,如果离开的人值得信赖,那么我们是否继续使用现有证书?

答案1

拥有服务器管理权限(通常甚至是物理权限)的人将能够提取私钥。无论是通过导出、内存嗅探还是其他类似的手段。

您的管理员有权访问您的 Web 服务器的私钥。接受这一事实,并努力解决这个问题。如果您的系统管理员不值得信任,那么您可能需要更好的系统管理员,或者至少需要更少的系统管理员来访问 Web 服务器。如果这是管理层对安全的偏执,那么他们是否信任系统管理员可能存在更深层次的问题。

这并不是说你应该让每个人都能访问私钥。在授予访问权限之前,应该始终需要访问权限。考虑到这一点,你会采取极端措施来确保完全控制网站的系统管理员无法导出私钥,但仍能以几乎无法追踪的方式操纵网站本身吗?我们又回到了信任问题,我认为这是需要解决的问题的核心。

答案2

导入密钥时,您可以选择将其标记为不可导出。这将阻止您使用 IIS 或证书 MMC 导出它。至少,这会让事情变得有点困难。

但是,如果他们在机器上拥有管理员帐户,或者可以物理访问该机器,他们仍然可以通过其他方式获取密钥。

答案3

这时“中级 CA”就可以提供帮助。

下面这个例子中的“根 CA”归 SSL 公司所有,而不是您所有。

您无法直接控制由根 CA 创建的密钥,因此,如果由根 CA 签名的密钥被泄露,您必须通过他们来撤销它。

但:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key for site

如果您在中间放置另一个 CA,并让您购买的 SSL 证书签署您自己的 CA 证书而不是直接签署您的服务器证书,那么您可以保留对下面的服务器证书的控制权,并在其下面的内容受到损害时颁发撤销证书或采取其他任何措施。

您将中级 CA 私钥保留给自己,管理员不需要查看它。

您还可以执行以下操作:

Root CA (SSL company)
 |
 +-Intermediate CA (You)
   |
   +-Server Key 1 for site
   +-Server Key 2 for site 
   +-Server Key 3 for site

您可以为破解做好准备,并提前生成证书,这样在单个密钥被撤销时,您可以快速切换。管理员在 1 个密钥被破解之前不会获得 2 个或 3 个密钥。您可以在网站上发布有关此计划的通知,这也会让您的管理员知道,您已为破解做好准备,他们那边的滑稽行为不会破坏您的网站。

答案4

有许多文章建议将私钥存储在服务器以外的其他地方,但这些私钥是用于代码签名证书。想象一下,您在只有您才有权访问的离线计算机上拥有密钥,编写了一些软件,您从离线服务器获取私钥,对代码进行签名,然后在需要再次签名某些代码之前,您不再需要私钥。

最好的解决方案一直是离线存储您的密钥,并且将继续如此。如何存储完全取决于您(有几种方法),只需记住将其妥善保管在办公室保险箱中或不易被他人窃取的地方即可。

更多详情请阅读:https://www.thesslstore.com/blog/heres-what-happens-when-your-private-key-gets-compromised/

相比之下,SSL 证书用于网站启用 HTTPS 通信:Web 服务器每次握手时都需要私钥。因此,离线存储它是行不通的。

相关内容