如果 SSLCertificateKeyFile 值存在,并且指向具有除读取密钥所需的最低权限之外的任何权限的文件,是否可能导致 httpd 无法通过配置测试?我最初httpd
以 身份运行,并在启动后切换到其他用户。私钥文件应由具有 400 个权限的组root
拥有。任何更宽松的权限都会导致警告或启动失败。root
root
客户ssh
端有类似这样的行为;如果您尝试使用权限过于开放的私钥,则会失败。
答案1
取决于您的商店有多大。如果这是必需的,您可以修补 apache 以拥有此功能,并可能尝试将其添加到上游。将修补后的 apache 保存在本地存储库中并将其分发到本地服务器。
您还可以更改 apache 启动脚本来检查配置并提取具有 SSL 密钥的文件名并检查其权限。
第三个选项是创建一个 systemtap 脚本,当 apache 尝试打开密钥时检查是否记录错误并终止 apache。
第四个选项 - 使用 inotify 并检查何时读取键,检查它们是否由 apache 守护进程打开,记录错误,然后终止 apache。
答案2
像这样部署一个 cron 作业可能会更简单:
1 * * * * chown -R root:root /etc/apache/keys; chmod -R 400 /etc/apache/keys/*
Apache 始终会顺利启动(除非您有只是更改了 SSL 文件的权限),即使有人在 Apache 运行时更改了权限,这些权限也会在一小时内更改回来。该作业的影响很小,您甚至可以在生产系统上每分钟运行它而不用担心。
如果您使用 Puppet(或类似工具)部署 SSL 密钥,您还可以配置 Puppet 来强制执行这些文件的所有权和权限。当然,您必须处理存储在 Puppet 中的密钥。