我想对我们网站的 SSL 密钥保密。它存储在 2 个 USB 记忆棒上,一个在保险箱中,一个由我保管。然后我是唯一一个将它应用到网络服务器的人,这样它就完全安全了。
除了...
至少在 IIS 上,您可以导出密钥。因此,任何管理员都可以获得密钥的副本。有没有办法解决?或者根据定义,所有管理员都可以完全访问所有密钥吗?
更新: 我确实有我完全信任的系统管理员。导致这种情况的原因是其中一个人辞职了(他们有一个小时通勤到我们公司,有 5 分钟通勤到新公司)。虽然我信任这个人,就像我们在有人离开时禁用他们的 Active Directory 帐户一样,我认为我们应该有办法确保他们不会保留使用我们 SSL 的能力。
最让我印象深刻的是,如果我是唯一拥有它的人。我们的证书在一月份到期,所以如果可以的话,现在是时候改变做法了。根据答案,我们似乎做不到。
因此,这导致了一个新问题 - 当有权访问证书的人离开时,获取新证书并撤销现有证书是否是标准做法。或者如果离开的人是值得信赖的,那么我们是否继续使用我们拥有的证书?
对服务器具有管理(甚至通常是物理)访问权限的人将能够提取私钥。无论是通过导出、内存嗅探还是其他此类诡计。
您的管理员有权访问您的 Web 服务器的私钥。接受这个事实,然后解决这个问题。如果您的系统管理员不值得信任,那么您可能需要更好的系统管理员,或者至少需要更少的系统管理员来访问 Web 服务器。如果这是一个管理安全偏执的问题,那么他们信任系统管理员的能力可能存在更深层次的问题。
这并不是说您应该让每个人都可以访问私钥。在授予访问权限之前,应该始终需要访问权限。考虑到这一点,您是否会采取极端措施来确保完全控制网站的系统管理员无法导出私钥,但仍然可以以任何数量几乎无法追踪的方式操纵网站本身?我们在这里重新信任,我认为这是需要解决的问题的核心。
导入密钥时,您可以选择将其标记为不可导出。这将阻止您使用 IIS 或证书 MMC 来导出它。至少,它让它变得更难一些。
但是,如果他们在计算机上拥有管理员帐户,或者可以物理访问它 - 他们仍然能够通过其他方式获取密钥。
这就是“中间 CA”可以提供帮助的地方。
以下示例中的“根 CA”由 SSL 公司拥有,而不是您。
您无法直接控制根 CA 创建的密钥,因此如果根 CA 签名的密钥被泄露,您必须通过它们来撤销它。
但:
如果您将另一个 CA 放在中间,并让您购买的 SSL 证书签署您自己的 CA 证书,而不是直接签署您的服务器证书,您可以保留对下面的服务器证书的控制权并颁发吊销证书,或者在它下面的东西受到损害时做任何其他事情.
您将中间 CA 私钥留给自己,管理员不需要看到它。
你也可以这样做:
您可以为妥协做好准备,并提前生成证书,这样您就可以在单个密钥被吊销时快速切换。管理员在 1 妥协之前不会获得 2 或 3 的密钥。您可以在您的网站上发布有关此方案的通知,这也会向您的管理员传达您已准备好应对妥协以及他们的有趣业务end 不会破坏您的网站。
有许多文章建议将私钥存储在服务器以外的地方,但这些私钥用于代码签名证书。想象一下,您在离线计算机上拥有只有您可以访问的密钥,编写了一些软件,您从离线服务器获取私钥,对代码进行签名,然后在需要签名之前不再需要私钥再次编码。
阅读更多:https ://www.thesslstore.com/blog/heres-what-happens-when-your-private-key-gets-compromised/
相比之下,SSL 证书用于网站启用 HTTPS 通信:在 Web 服务器的每次握手期间都需要私钥。因此,离线存储它是行不通的。