作为参考,这个问题与以下问题相关;但它们没有提供答案:
以未加密形式存储 RSA 私钥 apache2 重启时 SSL 密码
我有一台在 Windows 2003 Server 上运行的 Apache 2.2 服务器。我的私钥文件以未加密的形式存储在与 Apache 配置文件相同的文件夹中(遵循此处的 Apache 指南:http://httpd.apache.org/docs/2.2/ssl/ssl_faq.html#removepassphrase)。
服务器上托管的网站都共享同一个 Apache 实例。Apache 在专用用户帐户下运行,该帐户具有对 Web 文件夹和配置/私钥文件夹的读取权限。
原则上,现在任何客户都应该能够编写 PHP 脚本来读取这些内容,对吗?所以这似乎不是一个理想的情况。Apache 指南说密钥文件只能由 root 读取。我不能这样做,因为 Apache 无法读取它们。
有没有适当的方法可以使这些密钥文件可被 Apache 读取,而无需将它们暴露给 Apache 中运行的任何脚本?
答案1
apache 以 root 身份启动,然后以 apache 用户身份生成其进程,因此,如果关键文件由 root 拥有,它仍然可以读取这些文件,此时,在启动过程中,apache 将不会提供文件,因此用户编写的任何脚本都不会被执行,直到 apache 将其权限降至 apache 用户,此时脚本将无法读取文件
解决您问题的 2 个简单方法
- 不要将密钥文件存储在 apache 配置目录中(将它们存储在服务器的其他位置)
- 确保密钥文件归 root 所有
答案2
我认为给出的答案不适用于 Windows。
我的 sslcertificates/ 文件夹归“system”所有。当 Apache 没有对此文件夹的读取权限时,它就无法启动。我使用 sysinternals 进程监视器来查找问题所在,它清楚地显示 httpd.exe 想要读取密钥文件(这是有道理的)。
因此,Apache做需要这些文件的读取权限!
因此这个问题仍未得到解答。