Отказано в разрешении 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.