CodeGym /Kurse /Docker SELF /Zertifikatsverwaltung und Einrichtung von automatischer A...

Zertifikatsverwaltung und Einrichtung von automatischer Aktualisierung

Docker SELF
Level 7 , Lektion 4
Verfügbar

Zertifikatsverwaltung und Einrichtung von automatischer Aktualisierung

1. Überprüfung der aktuellen Zertifikate

Befehl certbot certificates

Fangen wir mit etwas Einfachem an: Wie kannst du herausfinden, welche Zertifikate bereits auf deinem Server installiert sind? Let's Encrypt stellt ein praktisches Tool bereit — certbot. Mit dem Befehl certbot certificates kannst du detaillierte Infos zu deinen aktuellen Zertifikaten erhalten.

sudo certbot certificates

Das Ergebnis wird ungefähr so aussehen:

Found the following certs:
  Certificate Name: example.com
    Domains: example.com www.example.com
    Expiry Date: 2023-12-31 10:00:00+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/example.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/example.com/privkey.pem

Hier sind ein paar wichtige Details aufgeführt:

  • Der Name des Zertifikats.
  • Die Domains, die vom Zertifikat abgedeckt werden.
  • Das Ablaufdatum (damit du rechtzeitig aktualisieren kannst).
  • Der Pfad zu den Zertifikats- und privaten Schlüsseldateien.

Ein nützlicher Lifehack:

Wenn du dazu neigst, Benachrichtigungen über Ablaufdaten zu ignorieren, wird dieser Befehl dein bester Freund. Schließlich möchte niemand der Entwickler sein, der erst von wütenden Nutzern erfährt, dass ein Zertifikat abgelaufen ist.


2. Automatische Erneuerung von Zertifikaten

Unter der Haube von Let's Encrypt

Let's Encrypt-Zertifikate sind 90 Tage gültig, um Sicherheitsrisiken zu minimieren. Aber sie alle 3 Monate manuell zu erneuern, ist echt keine Option. Zum Glück gibt es einen eingebauten Befehl zur Automatisierung:

sudo certbot renew

Dieser Prozess prüft alle Zertifikate und erneuert automatisch die, die bald ablaufen.

Einrichtung der automatischen Erneuerung mit Cron

Cron ist ein eingebautes Tool in Linux, um Aufgaben nach einem Zeitplan auszuführen. Es führt Befehle zu festgelegten Zeiten aus, und genau das brauchen wir für die Automatisierung der Zertifikatserneuerung. So wird Cron dafür eingerichtet:

  1. Öffne den Cron-Editor für den aktuellen Nutzer:

    sudo crontab -e
    
  2. Füge folgende Zeile am Ende der Datei hinzu:

    0 0 * * * certbot renew --quiet
    

    Dieser Befehl führt certbot renew jeden Tag um Mitternacht aus. Das Flag --quiet unterdrückt unnötige Ausgaben, sodass die Erneuerung unauffällig und störungsfrei abläuft.

  3. Speichere die Änderungen und verlasse den Editor.

Jetzt wird dein Server die Zertifikate automatisch erneuern, und du musst dir keine Sorgen mehr um das Ablaufdatum machen (naja, fast keine).


3. Manuelles Erneuern von Zertifikaten

Manchmal löst Automatisierung nicht alle Probleme, und es ist notwendig, Zertifikate manuell zu erneuern. Zum Beispiel, wenn du gerade eine neue Domain in die Website-Konfiguration hinzugefügt hast, musst du ein neues Zertifikat manuell anfordern. Hier kommt wieder certbot ins Spiel:

Beispielbefehl:

sudo certbot renew

Zertifikat für eine bestimmte Domain erneuern

Wenn du ein Zertifikat erneuern musst, das mit einer bestimmten Domain verknüpft ist, wird folgendes Befehlsformat verwendet:

sudo certbot certonly --nginx -d example.com -d www.example.com

Hier:

  • --nginx gibt an, dass die Konfiguration automatisch auf den Nginx-Server angewendet wird. Für Apache nutze --apache.
  • Die Flags -d listen die Domains auf, für die ein Zertifikat ausgestellt werden soll.

Nach Ausführung des Befehls prüft Certbot die Serverkonfiguration, fordert ein neues Zertifikat an und konfiguriert es.


4. Benachrichtigungen und Überwachung

Email-Benachrichtigungen

Bei der Installation von Certbot wurde deine E-Mail-Adresse abgefragt. Wenn du sie angegeben hast, erhältst du 20 Tage vor Ablauf des Zertifikats Benachrichtigungen. Falls du plötzlich keine E-Mail-Adresse angegeben hast oder sie ändern möchtest, kannst du das so machen:

sudo certbot register --update-registration --email newaddress@example.com

Jetzt kann dich keine Situation mehr überraschen. Na ja, fast.

Überprüfung von außen

Es gibt externe Services, die dir helfen können, die Gültigkeit von Zertifikaten im Auge zu behalten. Zum Beispiel SSL Labs. Gib einfach die Adresse der Webseite ein, und der Service prüft das Zertifikat, einschließlich der Gültigkeitsdauer, der Vertrauenskette und der Sicherheitsstufe.


5. Entfernen von unnötigen Zertifikaten

Manchmal werden alte Zertifikate überflüssig, z. B. wenn du eine Domain nicht mehr wartest. Um das System nicht zu überladen, ist es besser, sie zu löschen.

Befehl zum Löschen:

sudo certbot delete

Certbot zeigt eine Liste der verfügbaren Zertifikate an und bietet an, eines davon zum Löschen auszuwählen.

Nützlicher Tipp:

Sei vorsichtig beim Löschen von Zertifikaten, damit du nicht versehentlich eine aktive Website offline nimmst. Überprüfe immer, ob das Zertifikat nirgendwo mehr verwendet wird.


6. Beispiele und Debugging von Fehlern

Prüfen nach dem Update

Nach jeder Änderung oder Aktualisierung der Zertifikate solltest du immer überprüfen, ob die Website korrekt funktioniert. Am einfachsten geht das mit curl:

curl -I https://example.com

Erwartetes Ergebnis — Code HTTP/1.1 200 OK.

Wenn etwas schiefgeht, schau dir als Erstes die Logs an:

  • Für Nginx:

      sudo tail -f /var/log/nginx/error.log
    
  • Für Apache:

      sudo tail -f /var/log/apache2/error.log
    

Häufiger Fehler: "Too Many Requests"

Wenn du zu oft neue Zertifikate anforderst, kann Let's Encrypt dir mit der Fehlermeldung "Too Many Requests" den Zugriff blockieren. In solchen Fällen wird empfohlen, den Testserver von Let's Encrypt zu nutzen:

sudo certbot certonly --test-cert --nginx -d example.com

Dieser Befehl gibt ein Testzertifikat aus, das nicht für den realen Gebrauch gültig ist, aber dir hilft, die Konfiguration zu überprüfen.


7. Letzter Schritt: automatischer Neustart des Webservers

Let's Encrypt aktualisiert die Zertifikatsdateien, aber Webserver wie Nginx oder Apache bemerken die Änderungen nicht, bis du sie neu startest. Das kann man auch automatisieren. Aktualisiere den Cron-Eintrag:

0 0 * * * certbot renew --quiet && systemctl reload nginx

Oder für Apache:

0 0 * * * certbot renew --quiet && systemctl reload apache2

Jetzt wird nach der Aktualisierung jedes Zertifikat sofort auf den Server angewendet.


Diese Vorlesung soll dir die Sicherheit geben, nachts ruhig schlafen zu können, in dem Wissen, dass deine Zertifikate automatisch aktualisiert werden, die Webseiten geschützt sind und du keinen Anruf vom Chef um drei Uhr morgens bekommst mit den Worten "Die Nutzer beschweren sich, dass die Seite nicht verfügbar ist." Zertifikatsmanagement ist eine wichtige Fähigkeit, die in der realen Arbeit nützlich sein wird, besonders wenn du vorhast, große Webanwendungen bereitzustellen oder als DevOps-Ingenieur zu arbeiten.

Kommentare
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION