用于 SSL 认证的 CSR 和密钥文件在何处生成是否重要?

Jan*_*ard 18 ssl openssl ssl-certificate csr

我必须为通配符 SSL 证书创建一个 CSR。SSL 提供商的一些常见问题解答说我应该在要安装证书的机器上生成 CSR 文件?我的理解是,只要稍后将文件移动到正确的位置,在哪里生成 CSR 或密钥文件就无关紧要。

所以我的问题是:用于 SSL 认证的 CSR 和密钥文件在何处生成是否重要?

Mad*_*ter 21

你的理解是正确的。在所有其他条件相同的情况下,这无关紧要;但有皱纹。

在有问题的服务器上生成它们的一个优点是它最大限度地减少了密钥在传输过程中被泄露的可能性。只要您使用安全的机器来生成它们,并使用安全的方法(不受 MITM 攻击)将它们移动到服务器,您就可以避免这种情况。不要忘记在生成系统上安全擦除它们,除非您有意保留副本,并相应地受到保护。

在单独的机器上生成的一个优势:通常,这将是您的桌面。台式机上的熵池几乎总是比无人值守服务器上的更深,因为台式机有很大的随机源通过键盘和鼠标电缆(即您!)连接。熵的不足可能导致密钥生成需要很长时间,或者导致它使用/dev/urandomPRNG 输出,这取决于生成工具的偏执程度,这可能导致密钥较弱;台式机一般不会有这个问题。

后来编辑:根据与此处链接的其他地方的讨论,提出了两点。首先,您可以通过在您的桌面上生成,例如dd if=/dev/random bs=1k count=10 of=/tmp/entropy.dat,将复制到远程服务器,然后直接或通过加深远程服务器的熵池将其提供给您的密钥生成过程,从而寻求中途解决方案。我还没有找到一种方法来做前者,而做后者通常需要施加特权,如果你和远程服务器之间的通道不安全,这是整个反对的重点——也是不安全的。

其次,可估量的mjg59提出了硬件安全模块的问题 - 即,您放入或在其中创建私钥的设备,然后执行密钥操作而不会泄露密钥。这是一个很好的观点,但超出了这个问题的范围。

但是该线程的更一般结果 - 您应该拥有一个精确的威胁模型,并适当地选择您的响应 - 是一个很好的结果。我的威胁模型是我的通信渠道是安全的,但我的端点受到智能攻击。这意味着我将在本地生成熵强的 SSL 密钥对并分发它们。如果结果证明我的模型不准确并且我的通信变得脆弱,我将立即知道假设我的所有 SSL 密钥对都已泄露。 如果您的威胁模型不同,您应该相应地调整您的做法。


mul*_*laz 7

这有点重要。

如果您在另一台机器上生成它们,密钥在生成机器上很容易受到攻击,然后在服务器上。如果您使用受感染的机器生成它们,一些病毒可能会窃取密钥,甚至在它们被移动到安全服务器之前。

如果您在安全服务器上生成它们,并且只是移动 CSR/证书,那么在第一种情况下某人/某物获得私钥的机会较小,因为私钥仅位于一台机器上。