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:
Öffne den
Cron
-Editor für den aktuellen Nutzer:sudo crontab -e
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.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.
GO TO FULL VERSION