如果存在一个SSLCertificateKeyFile值,是否有可能使httpd失败一个configtest,并指向一个文件,除了读取密钥所需的最小值以外的任何权限? 我有最初作为root运行的httpd ,启动后切换到不同的用户。 私钥文件应该由root拥有,且拥有组root和权限400.任何更宽容的内容都会导致警告或启动失败。
ssh客户端具有与此相似的行为; 如果您尝试使用权限太大的私钥,则失败。
取决于你的店铺有多大。 如果这是一个要求,你可以修补Apache有这个,可能会尝试将其添加到上游。 将修补后的apache保存在本地存储库中,并将其分发到本地服务器。
您还可以更改apache启动脚本来检查configuration并提取具有SSL密钥的文件名,并检查其权限。
第三个选项是创build一个systemtap脚本,用于检查Apache何时尝试打开密钥logging错误并杀死Apache。
第四个选项 – 使用inotify并检查键是否被读取,检查它们是否被apache守护进程打开,logging一个错误,然后杀死apache。
部署一个像这样的cron作业可能会更简单:
1 * * * * chown -R root:root /etc/apache/keys; chmod -R 400 /etc/apache/keys/*
Apache将始终无误地启动(除非您刚刚更改了SSL文件的权限),即使有人在Apache运行时更改了权限,他们也将在一小时内恢复。 这项工作影响不大,甚至可以在生产系统上每分钟运行一次,而不用担心。
如果您使用Puppet(或类似的)部署SSL密钥,则还可以configurationPuppet以强制执行这些文件的所有权和权限。 当然,那么你必须处理存储在Puppet中的密钥。