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?


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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.