Возможно ли, чтобы httpd завершился неудачным тестом конфигурации, если значение SSLCertificateKeyFile существует и указывает на файл с любыми разрешениями, отличными от минимально необходимых для чтения ключа? у меня есть httpd
работает как root
изначально и переключение на другого пользователя после запуска. Файл закрытого ключа должен принадлежать root
с группой root
и разрешения 400. Все более разрешительные должны вызывать предупреждение или сбой при запуске.
В ssh
поведение клиента похоже на это; если вы попытаетесь использовать закрытый ключ, разрешения которого слишком открыты, это не удастся.
Может быть проще просто развернуть задание cron следующим образом:
1 * * * * chown -R root:root /etc/apache/keys; chmod -R 400 /etc/apache/keys/*
Apache всегда запускается без ошибок (если у вас нет просто изменили разрешения для файлов SSL), и даже если кто-то изменит разрешения во время работы Apache, они будут изменены обратно в течение часа. Это задание достаточно малоэффективное, и вы даже можете без проблем запускать его каждую минуту в производственной системе.
Если вы развертываете свои ключи SSL с помощью Puppet (или аналогичного), вы также можете настроить Puppet, чтобы обеспечить право собственности и разрешения для этих файлов. Конечно, тогда вам придется иметь дело с ключами, хранящимися в Puppet.
Зависит от размера вашего магазина. Если это необходимо, вы можете исправить apache, чтобы это было, и, возможно, попытаетесь добавить его вверх по течению. Храните исправленный apache в локальном репозитории и распространяйте его на локальные серверы.
Вы также можете изменить сценарии запуска apache, чтобы проверить конфигурацию и извлечь имена файлов с ключами SSL, а также проверить их разрешения.
Третий вариант - создать сценарий systemtap, который проверяет, когда apache пытается открыть ключи, регистрирует ошибку и убивает apache.
4-й вариант - используйте inotify и проверьте, когда ключи прочитаны, проверьте, открыты ли они демоном apache, запишите ошибку, затем уничтожьте apache.