为什么将 Apache SSL 证书和私钥存储在单独的文件中?

为什么将 Apache SSL 证书和私钥存储在单独的文件中?

Apache mod_ssl 文档SSL证书文件SSL证书密钥文件指令指出,强烈建议不要将私钥和 SSL 证书存储在同一个文件中。

现在显然私钥文件应该保持安全,但假设情况确实如此,将证书存储在同一个文件中是否存在任何特定风险?我很好奇为什么这种行为得到支持,但却在没有任何解释的情况下被强烈反对。

答案1

SSL 证书文件是一把锁。SSL
证书密钥文件是它的钥匙。

将两者存储在一起相当于将钥匙插到前门的锁上。
如果攻击者破坏了单个文件,他们就拥有了成功冒充您的网站所需的一切(证书和私钥)。

如果您的 SSL 密钥没有密码,则尤其如此(许多 Web 服务器没有密码,以便在发生崩溃时自动启动)。


通过分离文件,您可以防止 Apache 错误导致其将内容SSLCertificateFile(本应公开的内容)转储到 Web 客户端。
(据我所知,不存在或从未存在过这样的错误,但 Apache 是一个庞大而复杂的软件。这是完全有可能的。)

如果 Apache 转储此文件,并且其中包含的只是 SSL 证书(锁),则没有问题:每个人在向服务器发出 SSL 请求时都会获得该证书的副本。
如果文件还包含密钥,那么您就失去了任何安全机会 - 您的整个加密模型都被破坏了,您需要更改密钥。

答案2

旧版本的 OpenSSL 需要两个单独的文件(公共和私有)。其他加密引擎的旧版本需要一个文件(都在同一个文件中)。本着兼容性的“精神”(即“管理员抱怨不一致和必须维护两套证书”),现在大多数都支持两者。

不建议将两个证书(以及密钥链)存储在一个文件中,因为不同的证书具有不同的范围。这更多的是一个一致性问题,而不是技术问题,公共证书应该具有公开可读的文件权限,而私有证书则相反。将公共证书锁在系统上没有任何危险,只是与其目的不一致。

相关内容