Also richte ich einen Nginx-Server mit aktiviertem SSL mit einer Serverdefinition wie folgt ein:
server {
listen :80;
listen [::]:80;
server_name example.org;
root /foo/bar;
ssl on;
ssl_certificate /path/to/public/certificate;
ssl_certificate_key /path/to/private/key;
...
}
Sie bekommen die Idee (bitte verzeihen Sie Tippfehler).
Wie auch immer, was ich mich wundere, ist; Gibt es eine Möglichkeit, meine Zertifikate zu installieren, wenn ich sie erneuere, ohne nginx neu starten zu müssen?
Wenn ich beispielsweise symbolische Links von meinen aktuellen Zertifikaten verwenden /path/to/public/certificate
und auf diese /path/to/private/key
verweisen würde, müsste ich trotzdem neu starten, nginx
wenn ich diese einfach ändern würde, um auf neue (erneuerte) Zertifikate zu verweisen? Gibt es Alternativen?
quelle
nginx reload
und das Neustarten von Nginx sind zwei verschiedene Dinge:reload
Nginx wird nicht neu gestartet, sondern es wird nur das SIGHUP-Signal gesendet. Ist das SIGHUP-Signal ausreichend?echo |
in Ihrem Befehl? Wenn ich es weglasse, bekomme ich keine Rückmeldung. Ich möchte die AusgabenotAfter
überprüfen und sie dann mit dem aktuellen Datum vergleichen, um mir ein paar Tage vor Ablauf des Zertifikats selbst Spam zu senden.echo
Pipe bewirkt nur, dass die OpenSSL-Shell sauber nach Bash zurückkehrt und die Ausgabe wie gewohnt zurücksendet . Dies ist erforderlich, damit der Clean-Exit für die Verwendung in Skripten und für Automatisierungszwecke, wie es sich anhört, als würden Sie planen, verwendet werden kann. Ich habe zahlreiche Skripte implementiert, wie das, das Sie mit derselben Grundfunktionalität planen.Beim Empfang
SIGHUP
lädt nginx die aktualisierte Konfiguration neu, überprüft sie beim Öffnen der Protokolldateien und beim Lesen der SSL-Zertifikate und fährt anschließend die Arbeitsprozesse ordnungsgemäß herunter, wobei die vorherige Konfiguration zugrunde gelegt wird.Wenn nginx einige SSL-Zertifikate nicht lesen kann, verwende ich weiterhin ältere Konfigurationen. Andernfalls funktioniert es weiterhin und verarbeitet Anforderungen, unabhängig davon, was Sie mit Ihren Konfigurationsdateien getan haben. Auch wenn sie kaputt sind, werden Ihre Websites immer noch geöffnet.
Also ja, Sie müssen nginx nicht neu starten und riskieren, Ihren Server länger als nur einige Sekunden offline zu schalten, wenn Sie möchten, dass nginx aktualisierte Zertifikate sieht. Es sollte reichen, um:
In den meisten aktuellen Distributionen mit standardmäßig verwendetem systemd können Sie nginx auch mit dem folgenden Befehl neu laden:
quelle
systemd
Sie unterstützen , können Sie ebenfalls ausführensudo systemctl reload nginx
(wassudo service nginx reload
oben erwähnt ist, ist auf ausgerichtet).service nginx restart
. Ich werde nie müde zu sehen, wie schnell es abgeschlossen ist. Wenn es sich jedoch um einen Cron-Job handelt und ich nichts davon sehe, würde ich lieber eine Art Neuladen durchführen, um zu vermeiden, dass eine dauerhafte Sitzung unterbrochen wird oder ein Vorgang ansteht, der möglicherweise noch andauert.