Hier ist der Fehler, den ich erhalte:
Das erneute Laden der nginx-Konfiguration: nginx: [emerg] SSL_CTX_use_certificate_chain_file ("/ path / to / cert.pem") ist fehlgeschlagen (SSL: Fehler: 02001002: Systembibliothek: fopen: Kein solcher Datei- oder Verzeichnisfehler: 20074002: BIO-Routinen: FILE_CTRL: System lib-Fehler: 140DC002: SSL-Routinen: SSL_CTX_use_certificate_chain_file: System lib) nginx: Konfigurationsdatei /etc/nginx/nginx.conf-Test fehlgeschlagen
Ich bin mir zu 100% sicher, dass sich die Datei an diesem Speicherort befindet, aber Nginx scheint zu glauben, dass sie nicht vorhanden ist. Ich habe das domain.crt
und intermediate.crt
manuell in dieser Reihenfolge zusammengeführt. Ich habe mir den ganzen Tag über den Kopf gekratzt. Ich hoffe, jemand hat diesen Fehler gesehen und hat eine Lösung. (Und eine Randnotiz: Es ist kein Fehler beim Einfügen, dass der Dateispeicherort nur einmal und nicht erneut nach "Keine solche Datei oder Verzeichnis" angezeigt wird.)
quelle
path/to/cert.pem
ist sicherlich kein gültiger Ort.Antworten:
Sind Sie sicher, dass der Nginx-Benutzer Zugriff auf das Verzeichnis hat?
Überprüfen Sie auch die Berechtigungen der
.pem
Datei, wenn Nginx nicht darauf zugreifen kann, kann dies als angezeigt werden'no such file or directory'
.Wenn die Berechtigungen stimmen, können Sie den tatsächlichen Pfad erneut überprüfen. Wie Sie es eingefügt haben (von dem ich weiß, dass Sie das Verzeichnis entfernt haben), gibt es keinen Anfang,
/
der das Problem sein könnte.BEARBEITEN
Versuchen Sie, Ihr SSL-Setup in die folgende Struktur zu verschieben (und ändern Sie das,
nginx.conf
um es wiederzugeben):Nginx kann auf Ihrem Computer fehlschlagen,
.pem
da die Berechtigungen zu offen sind (Quelle erforderlich, um zu überprüfen, ob Nginx dies tut), aber das obige Setup sollte einwandfrei funktionieren.quelle
/
am Anfang, also habe ich die Frage geändert, um dies zu berücksichtigen . Die Datei befindet sich unter/home/user/subdirs
und alle darin enthaltenen Datei- und Verzeichnisberechtigungen sind Eigentum von user.www-data (username.group name) und 775 set. Und ich denke, dass Nginx Zugriff auf alles hat, was sich im Besitz von WWW-Daten befindet, obwohl ich mich irren könnte.$root/keys/
so meine cert Linie sieht aus wiessl_certificate keys/cert.pem
... müssen sie in der Webroot sein?chmod -R 600 /etc/nginx/ssl
in meinem Entrypoint lösen das Problem dankeIch werde meine Antwort für mein Problem hinterlassen, falls jemand auf dieses Thema stößt.
Ich habe Nginx im Docker-Container ausgeführt und habe den gleichen Fehler beim Versuch, auf die private Schlüsseldatei zuzugreifen. Nachdem ich mir einige Stunden am Kopf gekratzt habe, stelle ich fest, dass der Nginx meines Dockers nicht über das Mount-Volume verfügt, das meine Daten enthält.
Die einzige Möglichkeit, ein Mount-Volume hinzuzufügen, besteht darin, den Container mit der folgenden
-v
Option zu entfernen und neu zu erstellen : https://docs.docker.com/engine/tutorials/dockervolumes/Manchmal sind triviale Dinge schwer zu sehen. Ich hoffe das hilft.
quelle
Ein mögliches Szenario:
Manchmal kann es vorkommen, dass beim Konfigurieren von SSL-Dateien (privater Schlüssel und Zertifikat) für den zu konfigurierenden Virtualhost vergessen wurde, den absoluten Pfad anzugeben, in dem sich diese Dateien befinden.
Wenn Sie beispielsweise diesem offiziellen Dokument von Nginx folgen: http://nginx.org/en/docs/http/configuring_https_servers.html
Angenommen, Sie speichern die SSL-Dateien in " /etc/nginx/conf.d ":
Was geschieht?
Standardmäßig sucht Nginx nach den Dateien unter "/ etc / nginx", wenn der absolute Pfad für eine normale Datei, die von Nginx verwendet wird, nicht angegeben wird.
Aus /var/log/nginx/error.log
Was getan werden muss ?
Angabe des absoluten Pfades der zusätzlichen Dateien, die von Ihrer Virtualhost-Konfiguration verwendet werden.
So was:
quelle
Ich hatte das gleiche Problem. Ich musste die / etc / nginx / sites-enabled / default & default.save-Dateien ändern, die während des Installationsvorgangs automatisch meinen Site-Namen ohne das .com hinzugefügt haben . Um es kurz zu machen, mussten diese beiden Zeilen in meiner / etc / nginx / sites-enabled / default geändert werden. Bitte beachten Sie, dass diese Datei in meinem Dateisystem mit einem Verknüpfungssymbol angezeigt wird. Ich konnte jedoch mit der rechten Maustaste auf die Datei klicken und sie mit der Option "Bearbeiten / Interner Editor" bearbeiten.
HTTPS - Proxy-Anforderungen an lokale Node.js-App # HTTPS - Proxy-Anforderungen an lokale Node.js-App: server {listen 443; Servername switchmagic.com;
Als ich die Dateien durchgesehen und das .com hinzugefügt habe, was die Benennungskonvention ist, die ich zum Hinzufügen der Datei verwendet habe, war alles in Ordnung! Ich fand viele Entwickler, die die gleiche Frage stellten, und wollte meine Lösung herausbringen, um zu helfen, da die Antworten, die ich fand, hauptsächlich Root-Berechtigungen betrafen, aber Root-Berechtigungen waren in meinem Fall nicht das Problem. Rock on Devs.
quelle