Wie man Let's Encrypt SSL mit Certbot-Befehlen verwaltet
Wenn jemand Ihre Website besucht, tauschen ihr Browser und Ihr Server Informationen hin und her. Ohne Verschlüsselung findet dieses Gespräch im Klartext statt, was bedeutet, dass jeder, der das Netzwerk überwacht, alles lesen könnte: Anmeldeinformationen, persönliche Nachrichten, Zahlungsinformationen, alles.
Ein SSL-Zertifikat löst dies, indem es HTTPS aktiviert, das alle Daten zwischen dem Browser und Ihrem Server verschlüsselt. Das kleine Schloss-Symbol in der Adressleiste Ihres Browsers? Das zeigt Ihnen, dass die Verbindung verschlüsselt und sicher ist.
Jahrelang bedeutete das Erlangen eines SSL-Zertifikats, jährlich eine Zertifizierungsstelle zu bezahlen und einen mühsamen manuellen Einrichtungsvorgang zu durchlaufen. Dann kam Let’s Encrypt und änderte alles. Es ist eine kostenlose, automatisierte Zertifizierungsstelle, die aus einem einzigen Grund existiert: verschlüsselte Verbindungen im gesamten Web zum Standard zu machen.
Aber hier ist das Problem: Während Let’s Encrypt-Zertifikate kostenlos sind, laufen sie alle 90 Tage ab. Die manuelle Verwaltung der Erneuerungen wäre ein Alptraum, genau aus diesem Grund existiert Certbot, ein Kommandozeilen-Tool, das den gesamten Prozess des Beschaffens, Installierens und Erneuerns von Let’s Encrypt-Zertifikaten automatisiert.
In diesem Leitfaden werden wir alles durchgehen, was Sie über die Verwendung von Certbot wissen müssen, von der ersten Zertifikatsinstallation bis zum Verständnis der Erneuerungsprozesse, alles erklärt auf eine Weise, die Sinn ergibt, selbst wenn Sie gerade erst mit Linux-Servern anfangen.
Certbot unter Linux installieren
Der Certbot-Installationsprozess variiert leicht je nach Ihrer Linux-Distribution, ist jedoch insgesamt unkompliziert.
Für Debian-basierte Systeme möchten Sie zuerst sicherstellen, dass Ihr System auf dem neuesten Stand ist:
sudo apt update
sudo apt upgrade
Installieren Sie dann Certbot zusammen mit dem Plugin für Ihren Webserver, falls Sie nginx verwenden.
sudo apt install certbot python3-certbot-nginx
Oder wenn Sie Apache verwenden.
sudo apt install certbot python3-certbot-apache
Bei RHEL-basierten Distributionen sieht der Prozess ähnlich aus, verwendet jedoch dnf:
sudo dnf install certbot python3-certbot-nginx # For Nginx
sudo dnf install certbot python3-certbot-apache # For Apache
Die Webserver-Plugins sind wichtig, weil sie Certbot ermöglichen, Ihren Server automatisch für HTTPS zu konfigurieren. Ohne sie müssten Sie Konfigurationsdateien manuell bearbeiten, was genau die Art von mühsamer Arbeit ist, die Certbot zu beseitigen vorgesehen ist.
Ihr erstes SSL-Zertifikat erhalten
Sobald Certbot installiert ist, ist das Erhalten eines Zertifikats bemerkenswert einfach.
Für einen Nginx-Server sieht der Befehl folgendermaßen aus:
sudo certbot --nginx -d example.com -d www.example.com
Wenn Sie Apache verwenden, ist der Befehl fast identisch:
sudo certbot --apache -d example.com -d www.example.com
Wenn Sie den obigen Befehl zum ersten Mal ausführen, wird Certbot nach Ihrer E-Mail-Adresse fragen, was wichtig ist zu wissen, da Let’s Encrypt früher Ablaufbenachrichtigungen über diese E-Mail gesendet hat, diesen Service jedoch eingestellt hat, um die Datenspeicherung zu minimieren. Daher müssen Sie sich auf einen zuverlässigen automatischen Erneuerungsprozess verlassen oder Ihre eigene Überwachung durch Dritte für Ablaufbenachrichtigungen einrichten.
Danach erledigt Certbot seine Arbeit: Es kommuniziert mit Let's Encrypt, beweist, dass Sie die Kontrolle über die Domain haben, erhält das Zertifikat und ändert Ihre Nginx-Konfiguration, um HTTPS zu verwenden.
Verstehen der Erneuerung von SSL-Zertifikaten
Wie ich bereits erwähnt habe, laufen Let’s Encrypt-Zertifikate alle 90 Tage ab, daher ist es wichtig, einen automatisierten Erneuerungsprozess einzurichten. Ein systemd-Timer kann dies übernehmen, indem er zweimal täglich überprüft, ob Zertifikate kurz vor dem Ablauf stehen. Wenn ein Zertifikat weniger als 30 Tage verbleibend hat, erneuert Certbot es automatisch, ohne dass manuelles Eingreifen erforderlich ist.
Sie können diesen Erneuerungsprozess testen, ohne tatsächlich irgendetwas zu erneuern:
sudo certbot renew --dry-run
Der --dry-run-Schalter simuliert den Erneuerungsprozess, was nützlich ist, um sicherzustellen, dass alles richtig konfiguriert ist. Wenn der Befehl erfolgreich ist, können Sie darauf vertrauen, dass automatische Erneuerungen funktionieren werden, wenn die Zeit kommt.
Um zu sehen, wann Ihre Zertifikate ablaufen, und ihren Erneuerungsstatus zu überprüfen:
sudo certbot certificates
Sie können den Timerstatus überprüfen, um zu bestätigen, dass er aktiv ist:
sudo systemctl status certbot.timer
Verwaltung mehrerer SSL-Zertifikate
Wenn Sie weitere Domains oder Subdomains zu Ihrem Server hinzufügen, sammeln Sie mehrere Zertifikate, aber Certbot macht dies überraschend handhabbar.
Um eine neue Domain zu einem bestehenden Zertifikat hinzuzufügen:
sudo certbot --nginx -d example.com -d www.example.com -d blog.example.com
Wenn Sie ein völlig separates Zertifikat für eine andere Domain erhalten möchten:
sudo certbot --nginx -d another-domain.com -d www.another-domain.com
Jedes Zertifikat wird unabhängig verwaltet, aber alle Erneuerungen erfolgen automatisch durch denselben Erneuerungsprozess.
SSL-Zertifikate manuell erneuern
Während die automatische Erneuerung der ganze Sinn der Verwendung von Certbot ist, gibt es Zeiten, in denen Sie eine Erneuerung manuell erzwingen möchten. Vielleicht haben Sie Konfigurationsänderungen vorgenommen und möchten diese testen, oder Sie beheben gerade ein Problem.
Um alle Zertifikate, die zur Erneuerung fällig sind, zu erneuern, führen Sie den folgenden Befehl aus, der nur die Zertifikate erneuert, die innerhalb von 30 Tagen ablaufen, und Zertifikate mit mehr als 30 Tagen Restlaufzeit werden nicht erneuert.
sudo certbot renew
Wenn Sie die Erneuerung unabhängig vom Ablaufdatum erzwingen müssen:
sudo certbot renew --force-renewal
Ihre SSL-Zertifikate anzeigen
Manchmal müssen Sie die Details der installierten Zertifikate sehen, zum Beispiel den Namen jedes Zertifikats, die Domains, die es abdeckt, das Ablaufdatum und die Dateipfade, in denen das Zertifikat und der private Schlüssel gespeichert sind.
sudo certbot certificates
Die eigentlichen Zertifikatsdateien befinden sich in /etc/letsencrypt/live/, mit separaten Verzeichnissen für jedes Zertifikat. Darin finden Sie symbolische Links zu den eigentlichen Zertifikaten, die im Archivverzeichnis versioniert sind.
SSL-Zertifikate widerrufen
Wenn der private Schlüssel eines Zertifikats jemals kompromittiert wird oder wenn Sie ein Zertifikat nicht mehr benötigen, sollten Sie es widerrufen, und es teilt sofort Browsern und anderen Clients mit, dass dem Zertifikat nicht mehr vertraut werden sollte, selbst wenn es noch nicht abgelaufen ist.
Um ein Zertifikat zu widerrufen:
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
Sie müssen den Pfad zu der Zertifikatsdatei angeben, die Sie widerrufen möchten.
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem --delete-after-revoke
Certbot wird mit Let’s Encrypt kommunizieren, um das Zertifikat zu widerrufen und optional die lokalen Dateien zu bereinigen.
SSL-Zertifikate löschen, ohne sie zu widerrufen
Manchmal möchte man ein Zertifikat von seinem System entfernen, ohne es zu widerrufen. Vielleicht hat man eine Domain auf einen anderen Server verschoben oder man hat versehentlich ein Zertifikat erhalten und nie verwendet.
sudo certbot delete --cert-name example.com
Dies entfernt die Zertifikatsdateien von Ihrem System, widerruft das Zertifikat bei Let’s Encrypt jedoch nicht. Das Zertifikat bleibt gültig, wenn es anderswo verwendet wird, aber Certbot wird die Verwaltung auf diesem Server einstellen.
Behebung von Problemen bei der Erneuerung des Certbot-Zertifikats
Selbst mit der Automatisierung von Certbot können gelegentlich Probleme auftreten, und hier sind die häufigsten sowie deren Lösungen.
Wenn die Zertifikatserneuerung fehlschlägt, überprüfen Sie, ob Ihr Webserver läuft und vom Internet aus zugänglich ist, da Let’s Encrypt auf Ihren Server über Port 80 oder 443 zugreifen muss, um die Domaininhaberschaft zu überprüfen.
Sie können die Erneuerungsprotokolle auf bestimmte Fehlermeldungen überprüfen:
sudo cat /var/log/letsencrypt/letsencrypt.log
Diese Protokolle zeigen genau, was Certbot versucht hat und wo es fehlgeschlagen ist, was normalerweise direkt auf das Problem hinweist.
Wenn Ihre Webserver-Konfiguration aus irgendeinem Grund durcheinandergeraten ist, kann Certbot manchmal die ursprüngliche Konfiguration wiederherstellen:
sudo certbot --nginx rollback
Dies macht Änderungen rückgängig, die von Certbot vorgenommen wurden, obwohl es selten erforderlich ist, wenn Sie die automatischen Konfigurationsoptionen verwenden.
Verständnis von Ratenbeschränkungen
Let’s Encrypt hat Ratenlimits, um Missbrauch zu verhindern. Bei normaler Nutzung werden Sie diese niemals erreichen, aber es ist gut zu wissen, dass sie existieren. Sie können bis zu 50 Zertifikate pro registrierter Domain und Woche anfordern, und jedes Zertifikat kann bis zu 100 Subdomains abdecken.
Wenn Sie testen oder lernen, verwenden Sie großzügig das --dry-run-Flag, das den gesamten Prozess simuliert, ohne tatsächlich Zertifikate anzufordern, sodass es nicht auf die Ratenlimits angerechnet wird.
sudo certbot renew --dry-run
Certbot aktuell halten
Wie jede Software erhält Certbot Updates, die Fehler beheben und Funktionen hinzufügen, daher ist es wichtig, Ihre certbot-Updates über Ihren normalen Paketmanager auf dem neuesten Stand zu halten:
sudo apt update
sudo apt upgrade certbot
Über die Grundnutzung hinausgehen
Sobald Sie sich mit der grundlegenden Zertifikatsverwaltung vertraut gemacht haben, bietet Certbot fortgeschrittene Optionen, die es wert sind, erkundet zu werden. Sie können DNS-Validierung anstelle von HTTP-Validierung verwenden, wodurch Sie Zertifikate auch für Server erhalten können, die auf Port 80 oder 443 nicht öffentlich zugänglich sind.
Sie können benutzerdefinierte Erneuerungshooks konfigurieren, um Skripte auszuführen, wenn Zertifikate erneuert werden, was nützlich ist, um Dienste neu zu starten oder Konfigurationen zu aktualisieren. Sie können sogar Wildcard-Zertifikate erhalten, die alle Subdomains auf einmal abdecken.
Aber für die meisten Anwendungsfälle decken die einfachen Befehle, die wir behandelt haben, alles ab, was Sie benötigen. Certbot nimmt das, was früher ein komplexer, fehleranfälliger Prozess war, und reduziert es auf ein paar einfache Befehle, die einfach funktionieren.