答案1
SSL 证书文件是一把锁。SSL
证书密钥文件是它的钥匙。
将两者存储在一起相当于将钥匙插到前门的锁上。
如果攻击者破坏了单个文件,他们就拥有了成功冒充您的网站所需的一切(证书和私钥)。
如果您的 SSL 密钥没有密码,则尤其如此(许多 Web 服务器没有密码,以便在发生崩溃时自动启动)。
通过分离文件,您可以防止 Apache 错误导致其将内容SSLCertificateFile
(本应公开的内容)转储到 Web 客户端。
(据我所知,不存在或从未存在过这样的错误,但 Apache 是一个庞大而复杂的软件。这是完全有可能的。)
如果 Apache 转储此文件,并且其中包含的只是 SSL 证书(锁),则没有问题:每个人在向服务器发出 SSL 请求时都会获得该证书的副本。
如果文件还包含密钥,那么您就失去了任何安全机会 - 您的整个加密模型都被破坏了,您需要更改密钥。
答案2
旧版本的 OpenSSL 需要两个单独的文件(公共和私有)。其他加密引擎的旧版本需要一个文件(都在同一个文件中)。本着兼容性的“精神”(即“管理员抱怨不一致和必须维护两套证书”),现在大多数都支持两者。
不建议将两个证书(以及密钥链)存储在一个文件中,因为不同的证书具有不同的范围。这更多的是一个一致性问题,而不是技术问题,公共证书应该具有公开可读的文件权限,而私有证书则相反。将公共证书锁在系统上没有任何危险,只是与其目的不一致。