Ein SSL-Zertifikat brauchen Sie, damit Ihre Website über das sichere Protokoll HTTPS erreichbar ist. Dann werden die Daten zwischen Besucher und Server verschlüsselt, und der Browser zeigt neben der Adresse ein Schloss statt der Warnung „Nicht sicher“.
Let's Encrypt stellt solche Zertifikate kostenlos aus, und das Programm Certbot holt sie ab, bindet sie selbst in Nginx oder Apache ein und verlängert sie später auch selbst. Alle Befehle unten haben wir unter Debian 12 geprüft, unter Ubuntu funktionieren sie genauso.
Was Sie vorab brauchen
- Eine Domain, deren A-Record auf die IP-Adresse des Servers zeigt. Prüfen können Sie das mit dem Befehl
getent hosts example.com, er sollte die IP Ihres Servers anzeigen. - Die Website ist bereits erreichbar unter
http://ihre-domainauf Nginx oder Apache. Wie Sie Nginx einrichten, erklären wir in einem eigenen Artikel. - Ein offener Port 80, denn Let's Encrypt prüft die Domain genau über diesen Port. Wenn eine Firewall aktiv ist, öffnen Sie die Ports 80 und 443, wie im Artikel über die Firewall gezeigt.
Wenn die Domain einen AAAA-Record hat
Let's Encrypt prüft die Domain zuerst über IPv6. Wenn der AAAA-Record auf einen anderen Server zeigt oder die Website für IPv6 nicht eingerichtet ist, schlägt die Prüfung fehl. Tragen Sie im AAAA-Record die IPv6-Adresse dieses Servers ein oder löschen Sie den Eintrag.
1. Certbot installieren
# Certbot und sein Modul für Nginx installieren
apt update && apt install -y certbot python3-certbot-nginx# Certbot und sein Modul für Apache installieren
apt update && apt install -y certbot python3-certbot-apache2. Zertifikat ausstellen
Ein einziger Befehl holt das Zertifikat, bindet es in die Website ein und aktiviert die Weiterleitung von http:// auf https://. Geben Sie mit -d alle Adressen der Website an, in der Regel die Domain mit und ohne www.
certbot --nginx -d example.com -d www.example.com
Das Zertifikat ist ausgestellt und in Nginx eingebunden
certbot --apache -d example.com -d www.example.com
Das Zertifikat ist ausgestellt und in Apache eingebunden
Beim ersten Start stellt Certbot einige Fragen:
- E-Mail – an diese Adresse gehen wichtige Benachrichtigungen zum Konto.
- Nutzungsbedingungen von Let's Encrypt – geben Sie
Yein, um sie zu akzeptieren. - Newsletter der EFF – nach Wunsch, Sie können mit
Nantworten.
Wenn am Ende Congratulations! You have successfully enabled HTTPS steht, ist alles fertig. Öffnen Sie die Website unter https://ihre-domain, neben der Adresse erscheint ein Schloss.
Certbot hat die nötigen Zeilen selbst in die Einstellungen der Website eingetragen, sie sind mit dem Kommentar # managed by Certbot markiert. Bei Nginx ist das die Datei der Website in /etc/nginx/sites-available.
Bei Apache erscheint neben Ihrer Datei eine neue mit der Endung -le-ssl.conf.
3. Zertifikat prüfen
# Alle Zertifikate auf dem Server anzeigen
certbot certificates
Das Zertifikat ist noch 89 Tage gültig
In der Zeile Expiry Date sehen Sie das Ablaufdatum.
In Klammern hinter VALID steht, wie viele Tage das Zertifikat noch gültig ist.
Darunter stehen die Pfade zu den Dateien von Zertifikat und Schlüssel, falls Sie diese für andere Programme brauchen.
4. Prüfen, ob die Verlängerung funktioniert
Zertifikate von Let's Encrypt werden für einen kurzen Zeitraum ausgestellt. Derzeit sind es 90 Tage, und bis 2028 wird Let's Encrypt die Laufzeit schrittweise auf 45 Tage verkürzen. Manuell müssen Sie nichts verlängern. Certbot prüft die Zertifikate zweimal täglich und erneuert selbst diejenigen, deren Laufzeit bald endet.
Prüfen Sie mit einem Testlauf, ob die Verlängerung klappt. Er verändert nichts auf dem Server.
# Testweise Verlängerung aller Zertifikate
certbot renew --dry-run
Die Testverlängerung war erfolgreich
Wenn am Ende Congratulations, all simulated renewals succeeded steht, wird sich das Zertifikat selbst verlängern.
Mehrere Domains auf einem Server
Starten Sie Certbot für jede Website separat und geben Sie jeweils ihre Domains an. Um einem bereits ausgestellten Zertifikat eine neue Adresse hinzuzufügen, nennen Sie alle bisherigen Adressen und die neue und ergänzen den Schalter --expand.
# Subdomain shop zum Zertifikat von example.com hinzufügen
certbot --nginx --expand -d example.com -d www.example.com -d shop.example.comLimits von Let's Encrypt
Für dieselbe Gruppe von Domains lässt sich ein Zertifikat höchstens 5 Mal in 7 Tagen ausstellen.
Pro Domain sind höchstens 5 fehlgeschlagene Prüfungen pro Stunde erlaubt.
Wenn also etwas nicht klappt, suchen Sie zuerst im Abschnitt unten nach der Ursache und starten Sie Certbot erst danach erneut.
Zertifikat erhalten, ohne den Server zu konfigurieren
Wenn Sie das Zertifikat selbst einbinden möchten oder ein anderes Programm es braucht, verwenden Sie certonly. Certbot holt dann nur das Zertifikat und ändert nichts an den Einstellungen.
# Certbot besteht die Prüfung selbst über den laufenden Webserver.
# Für Apache --nginx durch --apache ersetzen
certbot certonly --nginx -d example.com# Funktioniert mit jedem Webserver. Geben Sie in -w den Ordner an,
# aus dem die Website ihre Dateien ausliefert
certbot certonly --webroot -w /var/www/example.com -d example.com# Certbot belegt kurzzeitig selbst Port 80. Wenn dort ein
# Webserver läuft, halten Sie ihn vorher an
certbot certonly --standalone -d example.comDie fertigen Dateien liegen im Ordner /etc/letsencrypt/live/example.com/. Die Datei fullchain.pem ist das Zertifikat.
Die Datei privkey.pem ist der private Schlüssel, den Sie niemals weitergeben dürfen.
Häufige Fehler
Timeout during connect (likely firewall problem)
Let's Encrypt konnte sich nicht über Port 80 mit dem Server verbinden. Meistens blockiert ihn die Firewall. Öffnen Sie die Ports 80 und 443 und starten Sie Certbot erneut. Ob der Webserver überhaupt auf Port 80 lauscht, prüfen Sie mit dem Befehl ss -tlnp | grep ':80 '.
DNS problem: NXDOMAIN looking up A
Die Domain hat keinen A-Record. Legen Sie ihn bei Ihrem Domain-Registrar mit der IP-Adresse des Servers an. Ein neuer Eintrag wirkt nicht sofort, manchmal müssen Sie etwas warten. Prüfen Sie das Ergebnis mit dem Befehl getent hosts example.com und starten Sie erst danach Certbot.
unauthorized: Invalid response … 404
Let's Encrypt hat die Domain aufgerufen, die Prüfdatei aber nicht gefunden. Meistens zeigt die Domain auf einen anderen Server, zum Beispiel ist der A-Record noch vom alten Hosting übrig, oder der AAAA-Record zeigt an die falsche Stelle. Vergleichen Sie die IP im DNS mit der IP Ihres Servers. Wenn Sie --webroot verwenden, prüfen Sie, ob in -w der Ordner angegeben ist, aus dem die Website ihre Dateien ausliefert.
Could not automatically find a matching server block
Das Zertifikat wurde ausgestellt, aber Certbot hat in den Einstellungen von Nginx keine Website mit dieser Domain gefunden. Tragen Sie die Domain in die Direktive server_name in den Einstellungen der Website ein, prüfen Sie diese mit dem Befehl nginx -t, laden Sie Nginx neu und binden Sie das bereits ausgestellte Zertifikat mit dem Befehl certbot install --cert-name example.com ein.
too many certificates oder too many failed authorizations
Die Limits von Let's Encrypt haben gegriffen, und Sie müssen warten, bis sie zurückgesetzt werden.
Das Limit für fehlgeschlagene Prüfungen gilt eine Stunde.
Das Limit für die erneute Ausstellung gilt eine Woche.
Um Ihre Einstellungen in Ruhe zu testen, starten Sie Certbot mit dem Schalter --dry-run, denn Testläufe zählen nicht zu den echten Limits.
Das Zertifikat ist abgelaufen und hat sich nicht selbst verlängert
Verlängern Sie es manuell mit dem Befehl certbot renew und achten Sie darauf, ob Fehler erscheinen. Meistens steckt eines der Probleme von oben dahinter, zum Beispiel ein geschlossener Port 80. Ob der Timer für die Verlängerung aktiv ist, prüfen Sie mit dem Befehl systemctl list-timers | grep certbot.
Details zu den letzten Läufen stehen in der Datei /var/log/letsencrypt/letsencrypt.log.
Kann ich ein Zertifikat für alle Subdomains auf einmal bekommen?
Ja, das ist ein Wildcard-Zertifikat in der Form *.example.com. Dafür prüft Let's Encrypt die Domain aber über einen DNS-Eintrag und nicht über die Website, deshalb passen die Methoden aus diesem Artikel nicht. Meistens ist es einfacher, ein Zertifikat für die benötigten Subdomains mit mehreren -d-Schaltern auszustellen.
Unsere Ressourcen
Telegram-Kanal: https://t.me/f3cloud_news
Hosting-Website: https://f3cloud.com