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


12

我想对我们网站的SSL密钥保密。它存储在2个USB记忆棒中,一个保存在保险箱中,另一个保存在我的手中。然后,我是唯一将其应用于Web服务器以使其完全安全的人。

除了...

至少在IIS上,您可以导出密钥。这样,作为管理员的任何人都可以获取密钥的副本。有没有办法解决?或者根据定义,所有管理员都具有对所有密钥的完全访问权限吗?

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

最让我震惊的是,如果我是唯一拥有它的人。我们的证书将于1月到期,因此如果可以的话,现在是时候改变惯例了。根据答案,看来我们做不到。

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


5
即使您使用的服务器不允许您导出它,它仍必须位于内存中,因此可以被提取。我看到的唯一选择是使用硬件加密模块,例如智能卡只能是三个带钥匙的密钥,但是任何具有物理访问权限的人都可以窃取它。如果被盗,您仍然可以将其撤消。
user2313067 2014年

27
如果您不信任管理员,则会遇到人事问题。
迈克尔·汉普顿

5
为什么首先将密钥复制到那些USB介质?与SSL一起使用的秘密密钥不必位于使用它的服务器之外的其他位置。(它当然可以包含在服务器的备份副本中,但是备份该密钥比服务器上的其他数据的重要性要小,因为您总是可以生成一个新的秘密密钥并像使用密钥进行签名一样对它进行签名。旧的)。
kasperd

我不是这方面的专家,但是是否不存在包含密钥的硬件加密模块,这些模块保留在其中,并且只有签名请求进入并且签名才出现?解决方案是将其焊接或粘合到服务器中。
matega 2014年

Answers:


26

具有对服务器的管理(甚至经常是物理)访问权限的人将能够提取私钥。无论是通过导出,内存嗅探还是其他此类欺骗手段。

您的管理员可以访问Web服务器的私钥。接受这一事实,并解决该问题。如果您的系统管理员不值得信任,那么您可能需要更好的系统管理员或至少更少的系统管理员才能访问Web服务器。如果是管理安全方面的偏执狂,那么关于他们信任系统管理员的能力可能存在更深层次的问题。

这并不是说您应该让所有人都可以访问私钥。在授予访问权限之前,始终应该需要访问权限。考虑到这一点,您是否要采取极端措施来确保对网站有完全控制权的系统管理员不能导出私钥,但仍然可以通过许多几乎无法追踪的方式来操纵网站本身?我们在这里重获信任,我认为这是需要解决的问题的核心。


2
+1为“您的管理员有权访问您的Web服务器的私钥。将其视为事实,然后加以解决”。关于“如何防止具有管理员权限的人执行X行为”的问题 向我表明一个更深层次的问题。要么太不信任,要么太松懈地放弃了管理员权限。
布兰登2014年

2
我更新了询问的原因。与系统管理员无关,它是遵循最佳实践的愿望。
David Thielen 2014年


0

这是“中间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的密钥。您可以在您的站点上发布有关此方案的通知,这还可以向管理员传达在发生损害时您已准备就绪,并且他们的生意可笑最终不会破坏您的网站。


1
这是否会为用户使用不受信任的CA发出SSL警告?
ceejayoz 2014年

1
我猜这只有在您可以在用户的​​浏览器(例如公司Intranet设置)中将CA作为受信任的证书安装CA的情况下才有效。我知道我的大胆计划有问题。:(
LawrenceC

0

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

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

有关更多信息,访问:https//www.thesslstore.com/blog/heres-what-happens-when-your-private-key-gets-compromised/

相反,SSL证书用于使网站能够进行HTTPS通信的网站:在每次Web服务器握手期间,都需要私钥。因此,将其离线存储将不起作用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.