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


25

Я встановлюю проксі-сервер nginx ssl на свій сервер Fedora.

Я створив параметр cert та key під / 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 повинен відкрити його як корінь, а потім скинути привілеї тому, хто користувач працює.
Aleš Krajník

Це самопідпис, так. Я поміняю право власності, дякую.
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.
dawud

Розвідник | команда audit2allow. Чи додали це деякі дозволи на selinux чи це було лише для підтвердження, що проблема з selinux?
numb3rs1x

Це було лише для підтвердження. Прочитайте їхні відповідні сторінки керівництва для отримання детальної інформації.
dawud

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-повідомлення (in / var / log / audit /), але дозволяє отримати доступ.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.