SSLCertificateFile和SSLCertificateKeyFile指令的Apache mod_ssl文档指出,将私钥和SSL证书存储在同一个文件中是“强烈不鼓励”的。
现在显然私钥文件应该是安全的,但是假设情况是这样的,在同一个文件中存储证书是否存在特定的风险? 我很想知道为什么这种行为是被支持的,但是没有解释却极力劝阻。
SSL证书文件是一个锁。
SSL证书密钥文件是其关键。
将两者放在一起相当于将钥匙粘在前门的锁上。
如果攻击者损害单个文件,他们就拥有了成功模拟您的网站(证书和私钥)所需的一切。
如果您的SSL密钥没有密码(尤其是许多Web服务器不允许它们在发生崩溃时自动启动),则情况尤其如此。
通过分离文件来抵御的是一个Apache错误,它导致它将SSLCertificateFile的内容(应公开的东西)转储到Web客户端。
(据我所知,目前还没有这样的bug存在,但是Apache是一个庞大而复杂的软件,完全有可能)。
如果Apache转储此文件,并且它包含的是SSL证书(锁),则不存在任何问题:无论如何,每个人在向服务器发出SSL请求时都会获得该证书的副本。
如果文件中包含密钥,那么您就有可能在安全性方面遇到任何问题 – 您的整个encryption模型都会受到影响,您需要更改密钥。
旧版本的OpenSSL需要两个单独的文件(公共和私有)。 旧版本的其他encryption引擎需要一个文件(都在同一个文件中)。 在兼容性的“精神”(又名“pipe理员关于不一致性和不得不维护两组证书)的大多数现在都支持。
由于不同的证书具有不同的范围,因此不鼓励将两个证书(也是密钥链)存储在单个文件中。 与技术相比,它更像是一个一致性问题,公共证书应该具有公共可读的文件权限,反之亦然。 没有任何危险的是将您的公共证书locking在您的系统上,这与它的目的不一致。