Brak uprawnień nginx do certyfikacji plików do konfiguracji ssl

25

Instaluję proxy nginx ssl na moim serwerze Fedora.

Utworzyłem parę certyfikatów i kluczy w / etc / nginx. Wyglądają tak:

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

...

Jako root próbuję uruchomić usługę nginx:

systemctl start nginx.service

Otrzymuję następujący błąd:

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

Czy coś jest nie tak z uprawnieniami do tych plików?

numb3rs1x
źródło
Wspomina o łańcuchu certyfikatów ... czy nie ma problemu z urzędem certyfikacji tego klucza demo.crt? Czy jest to certyfikat z podpisem własnym? Nawiasem mówiąc, nie sądzę, że plik klucza powinien być czytelny dla świata. Nginx powinien otworzyć go jako root, a następnie upuścić uprawnienia dla dowolnego użytkownika, którego uruchamia.
Aleš Krajník
Jest podpisany przez siebie, tak. Dzięki zmianie właściciela.
numb3rs1x
Zakładasz, że problem dotyczy certyfikatów, ale komunikat o błędzie dotyczy pliku konfiguracyjnego dla Nginx.
bbaassssiiee

Odpowiedzi:

39

Prawdopodobnie masz SELinuksa w trybie wymuszania (domyślny dla Fedory):

sestatus -v

W takim przypadku sprawdź dzienniki kontroli, powinieneś znaleźć błąd dostępu:

ausearch -m avc -ts today | audit2allow

Prawdopodobnie przeniesiłeś również plik zamiast go skopiować, więc kontekst bezpieczeństwa pliku może być nieprawidłowy.

ls -lrtZ /etc/nginx/demo.* 

i w razie potrzeby popraw:

restorecon -v -R /etc/nginx
dawud
źródło
Dziękuję Ci bardzo. Postępowałem zgodnie z instrukcjami i nie otrzymuję już błędu. Zdarzyło mi się przenieść te pliki z katalogu, w którym je utworzyłem. Mogę je utworzyć następnym razem w tym samym katalogu. Poza tym, jak mogę temu zapobiec w przyszłości?
numb3rs1x
W tym konkretnym przypadku użycia użyj cpzamiast mvi naucz się używać auditsystemu do wyszukiwania odmów AVC.
dawud
Ausearch | polecenie audit2allow. Czy to dodało jakieś uprawnienia do selinux, czy tylko po to, aby potwierdzić, że selinux był problemem?
numb3rs1x
To było tylko potwierdzenie. Szczegółowe informacje można znaleźć na odpowiednich stronach podręcznika.
dawud
4
Wow, dzięki! Dobrze jest mieć odpowiedź, która nie tylko „wyłącza SELinux”.
BCran
7

Myślę, że to SELinux odmawia zgody. Sprawdź ich kontekst SELinux. Ich powinny być httpd_config_t. Jeśli nie, uruchom

restorecon /etc/nginx/demo.*

lub

chcon httpd_config_t /etc/nginx/demo.*

jako root.

Możesz sprawdzić logi w / var / log / audit /, aby sprawdzić, czy to SELinux nie odmawia pozwolenia. Możesz także biegać

setenforce 0

ustawić SELinux w tryb zezwolenia . W ten sposób SELinux nadal generuje komunikaty AVC (w / var / log / audit /), ale zezwala na dostęp.

jdh8
źródło