apache可以使用密钥代理来存储SSL的私钥吗?

对于Apache中的mod_ssl来说,你需要在服务器上使用你的RSA私钥。 如果密钥是密码保护的,则必须在重新启动apache时input密码。 有SSLPassPhraseDialog所以你可以存储密钥encryption,并有一个程序传递它的短语,但是这确实没有比保持未encryption更安全。

我想知道,如果Apache支持,或可以作出支持,使用密钥代理进行操作需要私钥,很像ssh-agent openssh工作。 这样,只要服务器本身重新启动(假设代理在正常操作期间不以某种方式死亡),我只需要input密钥到密钥。

我意识到密钥存储在代理内存中,并从内存中获取可能,但很难做到。 另外,如果代理实际上是通过ssh从另一个主机转发的,而密钥在那里的内存中,那么只要Web服务器受到攻击,就不可能获得私钥。

如果apache目前支持这个答案是“否”,那么答案是“可以支持这个”吗? 我不确定关键操作是如何工作的,以及私钥需要什么级别的接触,并且我认为在我开始尝试代码尝试和自己一起破解之前,我会问。

你的想法一见钟情,但并不重要。 您的提议只会将安全问题推到其他地方。

由于IPC或API,您的Apache2进程必须与“私钥caching”进行通信,并且该通道也应该受到保护,否则攻击者可能会轻松查询证书。

所以如果你对你的文件系统的安全性没有把握,让你的服务器证书没有密码,这样的caching机制就不是更安全。

顺便说一句,完全重启Apache2的原因只有几个 – 就像改变SSLconfiguration一样。 您应该更喜欢不需要重新加载证书的apachectl graceful命令,因此不会再要求您input密码。

另一个想法是:如果您的服务器安全性得到了良好的监控,这要归功于IDS和文件完整性检查程序,并且在您的系统和SSL证书可能已经被入侵时发出警报,那么您可以冒这个风险,依靠撤销清单让您的证书没有密码保护来缓解你的生活。