it-swarm.com.de

Muss ich Nginx neu starten, wenn ich meine Sicherheitszertifikate erneuere?

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 haben die Idee (bitte verzeihen Sie Tippfehler).

Wie auch immer, ich frage mich; Wenn ich meine Zertifikate erneuere, gibt es eine Möglichkeit, sie zu installieren, ohne nginx neu starten zu müssen?

Wenn ich beispielsweise symbolische Links von /path/to/public/certificate Und /path/to/private/key Verwenden würde, die auf meine aktuellen Zertifikate verweisen, müsste ich nginx trotzdem neu starten, wenn ich dies tun würde Ändern Sie diese einfach, um auf neue (erneuerte) Zertifikate zu verweisen. Gibt es Alternativen?

36
Haravikk

Ja, ich bin mir ziemlich sicher, dass Sie Nginx neu laden müssen, damit die erneuerten Zertifikate das richtige Ablaufdatum anzeigen. Durch einfaches Löschen und Durchsuchen des Caches sollten Sie dies jedoch anzeigen können.

Oder wenn Sie cli bevorzugen, können Sie immer den alten vertrauenswürdigen OpenSSL-Befehl verwenden:

echo | openssl s_client -connect your.domain.com:443 | openssl x509 -noout -dates

Das würde Ihnen die aktuellen Daten auf dem Zertifikat geben. In Ihrem Fall wäre der Port 80 statt 443.

Oft funktioniert nginx -s reload Nicht wie erwartet. Auf vielen Systemen (Debian usw.) müssten Sie /etc/init.d/nginx reload Verwenden.

Sie können die Konfigurationsdatei jederzeit direkt angeben, wenn alles andere fehlschlägt, und zwar mit nginx -c /path/to/nginx.conf.

28
rubynorails

Nach dem Empfang von SIGHUP lädt nginx die aktualisierte Konfiguration neu, überprüfen Sie dies, während Sie Protokolldateien öffnen und SSL-Zertifikate lesen , und beenden Sie dann die Arbeitsprozesse ordnungsgemäß, basierend auf der vorherigen Konfiguration.

Wenn nginx einige SSL-Zertifikate nicht lesen kann, werde ich weiterhin mit einer älteren Konfiguration ausgeführt. Andernfalls funktioniert es weiterhin und verarbeitet Anforderungen, unabhängig davon, was Sie mit Ihren Konfigurationsdateien gemacht haben. Selbst wenn sie kaputt sind, werden Ihre Websites weiterhin geöffnet.

Ja, Sie müssen nginx nicht neu starten und riskieren, Ihren Server länger als nur einige Sekunden offline zu schalten, wenn nginx aktualisierte Zertifikate anzeigen soll. Es sollte ausreichen, um:

Sudo service nginx reload

In den meisten aktuellen Distributionen mit standardmäßig verwendetem systemd können Sie nginx auch mit dem folgenden Befehl neu laden:

Sudo systemctl reload nginx
23
sanmai