Отказано в разрешении nginx файлам сертификатов для конфигурации ssl


25

Я устанавливаю sgin-прокси nginx на моем сервере Fedora.

Я создал пару сертификатов и ключей в / etc / nginx. Они выглядят так:

ls -l /etc/nginx/
total 84
...
-rw-r--r--. 1 root root 1346 Sep 20 12:11 demo.crt
-rw-r--r--. 1 root root 1679 Sep 20 12:11 demo.key

...

Как пользователь root, я пытаюсь запустить службу nginx:

systemctl start nginx.service

Я получаю следующую ошибку:

nginx[30854]: nginx: [emerg]
SSL_CTX_use_certificate_chain_file("/etc/nginx/demo.crt") failed (SSL: error:0200100D:system     library:fopen:Permission denied...e:system lib)
nginx[30854]: nginx: configuration file /etc/nginx/nginx.conf test failed

Что-то не так с разрешениями для этих файлов?


В нем упоминается цепочка сертификатов ... не проблема ли с центром сертификации этого ключа demo.crt? Или это самозаверяющий сертификат? Кстати, я не думаю, что файл ключа должен быть читаемым для всего мира. Nginx должен открыть его как root и затем отбросить привилегии любому пользователю, от имени которого он работает.
Алеш Крайник,

Это самоподписанный, да. Я буду менять владельца, спасибо.
numb3rs1x

Вы предполагаете, что проблема связана с сертификатами, но сообщение об ошибке относится к файлу конфигурации для Nginx.
bbaassssiiee

Ответы:


39

Вы, вероятно, используете SELinux в принудительном режиме (по умолчанию для Fedora):

sestatus -v

Если это так, проверьте журналы аудита, вы должны найти ошибку доступа:

ausearch -m avc -ts today | audit2allow

Вы также, вероятно, переместили поле вместо его копирования, поэтому контекст безопасности файла может быть неправильным.

ls -lrtZ /etc/nginx/demo.* 

и исправьте это при необходимости:

restorecon -v -R /etc/nginx

Большое спасибо. Я следовал твоим инструкциям и больше не вижу ошибки. Мне удалось переместить эти файлы из каталога, в котором я их создал. Я могу создать их в том же каталоге в следующий раз. Кроме этого, как я могу предотвратить это в будущем?
numb3rs1x

В этом конкретном случае используйте cpвместо mvи научитесь использовать auditсистему для поиска отказов AVC.
Дауд

Ausearch | команда aud2allow. Это добавило некоторые разрешения для selinux или это просто для того, чтобы подтвердить, что selinux был проблемой?
numb3rs1x

Это было просто для подтверждения. Прочитайте их соответствующие страницы руководства для деталей.
Дауд

4
Вау, спасибо! Хорошо иметь ответ, который не просто отключает SELinux.
BCran

7

Я предполагаю, что это SELinux, который отказывает в разрешении. Проверьте их контекст SELinux. Их должно быть httpd_config_t. Если нет, запустите

restorecon /etc/nginx/demo.*

или

chcon httpd_config_t /etc/nginx/demo.*

как корень.

Вы можете проверить журналы в / var / log / audit /, чтобы увидеть, является ли SELinux отказом в разрешении. Вы также можете запустить

setenforce 0

установить SELinux в разрешительный режим . Таким образом, SELinux по-прежнему генерирует сообщения AVC (в / var / log / audit /), но разрешает доступ.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.