Nginx-Berechtigung für Zertifikatdateien für SSL-Konfiguration verweigert

25

Ich installiere einen nginx ssl-Proxy auf meinem Fedora-Server.

Ich habe ein Zertifikat und ein Schlüsselpaar unter / etc / nginx erstellt. Sie sehen so aus:

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

...

Als root versuche ich den Nginx-Dienst zu starten:

systemctl start nginx.service

Ich erhalte folgenden Fehler:

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

Stimmt etwas mit den Berechtigungen für diese Dateien nicht?

numb3rs1x
quelle
Es wird die Zertifikatskette erwähnt ... liegt das Problem nicht bei der Zertifizierungsstelle dieses demo.crt-Schlüssels? Oder ist es ein selbstsigniertes Zertifikat? Ich glaube übrigens nicht, dass die Schlüsseldatei von der Welt gelesen werden kann. Nginx sollte es als root öffnen und dann Berechtigungen für jeden Benutzer ablegen, unter dem es ausgeführt wird.
Aleš Krajník
Es ist selbst signiert, ja. Ich werde den Besitzer wechseln, danke.
numb3rs1x
Sie gehen davon aus, dass das Problem bei den Zertifikaten liegt, die Fehlermeldung bezieht sich jedoch auf die Konfigurationsdatei für Nginx.
bbaassssiiee

Antworten:

39

Sie haben SELinux wahrscheinlich im Erzwingungsmodus (der Standard für Fedora):

sestatus -v

Wenn dies der Fall ist, überprüfen Sie die Überwachungsprotokolle. Sie sollten den Zugriffsfehler finden:

ausearch -m avc -ts today | audit2allow

Wahrscheinlich haben Sie die Datei auch verschoben, anstatt sie zu kopieren, sodass der Sicherheitskontext der Datei möglicherweise falsch ist.

ls -lrtZ /etc/nginx/demo.* 

und korrigieren Sie es bei Bedarf:

restorecon -v -R /etc/nginx
Dawud
quelle
Vielen Dank. Ich habe Ihre Anweisungen befolgt und erhalte den Fehler nicht mehr. Ich habe diese Dateien aus dem Verzeichnis verschoben, in dem ich sie erstellt habe. Ich kann sie beim nächsten Mal im selben Verzeichnis erstellen. Wie kann ich verhindern, dass dies in Zukunft geschieht?
numb3rs1x
Verwenden Sie in diesem speziellen Anwendungsfall cpanstelle von mvund lernen Sie, wie Sie mit dem auditSystem nach AVC-Ablehnungen suchen.
Dawud
Die ausearch | Befehl audit2allow. Fügte das einige Berechtigungen zu Selinux hinzu oder war das nur, um zu bestätigen, dass Selinux das Problem war?
numb3rs1x
Es war nur zur Bestätigung. Lesen Sie die entsprechenden Handbuchseiten, um Einzelheiten zu erfahren.
Dawud
4
Wow, danke! Es ist gut, eine Antwort zu haben, die nicht nur "SELinux deaktivieren" ist.
BCran
7

Ich denke, es ist SELinux, das die Erlaubnis verweigert. Überprüfen Sie den SELinux-Kontext. Ihre sollte httpd_config_t sein. Wenn nicht, renne

restorecon /etc/nginx/demo.*

oder

chcon httpd_config_t /etc/nginx/demo.*

als root.

Sie können die Protokolle unter / var / log / audit / überprüfen, um festzustellen, ob SELinux die Berechtigung verweigert. Du kannst auch rennen

setenforce 0

um SELinux in den permissiven Modus zu versetzen . Auf diese Weise generiert SELinux weiterhin AVC-Nachrichten (in / var / log / audit /), lässt jedoch den Zugriff zu.

jdh8
quelle