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


11

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

现在,显然应该保护私钥文件的安全,但是假设是这种情况,将证书存储在同一文件中是否有特定的风险?我很想知道为什么支持这种行为,但是强烈建议不要进行解释。

Answers:


15

SSL证书文件是一个锁。
SSL证书密钥文件是其密钥。

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

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


分离文件所要防御的是一个Apache错误,该错误导致Apache将其内容SSLCertificateFile(应该公开可用的内容)转储到Web客户端。
(据我所知,不存在这样的错误,或者曾经存在过,但是Apache是​​一个大型,复杂的软件。这完全有可能。)

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


谢谢,理论上的错误导致Web服务器随同公共证书一起提供私钥,这也是我的最佳猜测。我真的不同意将密钥和证书放在同一文件中等同于将密钥敲入前门,但是同样,我想不出这样做的充分理由。
Vortura

1
它可能不如将钥匙敲到门上那么糟糕-可能更接近将钥匙粘贴在门框的顶部,或者使用那些隐藏钥匙的岩石之一:-)
voretaq7 2013年

7

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

不建议将两个证书(也包括密钥链)存储在一个文件中,因为不同的证书具有不同的范围。与技术性问题相比,这更是一个一致性问题,在技术性问题中,公共证书应具有可公开读取的文件权限,而对于私有证书,则反之亦然。将公共证书置于系统上的锁和钥匙中并没有危险,这只是与目的不符。

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.