Назад | Перейти на главную страницу

Может ли httpd проверить права доступа к файлу закрытого ключа, используемому с сертификатом SSL?

Возможно ли, чтобы 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.