Let’s Encrypt-Zertifikate mit Certbot einrichten und automatisieren

Let’s Encrypt ist eine kostenlose, offene Zertifizierungsstelle, die TLS-Zertifikate bereitstellt, um Websites per HTTPS zu sichern. Diese Zertifikate verschlüsseln die Kommunikation zwischen Browser und Webserver und schützen sensible Daten wie Passwörter oder Zahlungsinformationen. Im Gegensatz zu früheren, oft kostspieligen Verfahren können Website-Betreiber mit Certbot in wenigen Minuten ein gültiges Zertifikat ausstellen und automatisch erneuern lassen.

Voraussetzungen

  • Root- oder sudo-Zugriff auf den Server
  • Eine registrierte Domain, die auf den Server zeigt
  • Offener Port 80 (für HTTP-Validierung) und ggf. Port 443 (für HTTPS)
  • Installierter Webserver (Apache oder Nginx)

Certbot installieren

Offiziell empfohlene Installation per Snap

Snap liefert aktuelle Versionen direkt vom Certbot-Projekt.
Für Ubuntu/Debian-basierte Systeme:

sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Alternative: Paketinstallation

Für ältere Systeme ohne Snap:

sudo apt-get update
sudo apt-get install certbot

Hinweis: Prüfen Sie die Version (certbot --version), da ältere Distributionen veraltete Pakete enthalten können.

Zertifikat anfordern (Webroot-Methode)

Beispiel mit Hauptdomain und www-Alias:

sudo certbot certonly --webroot \
-w /var/www/example \
-d example.com -d www.example.com \
--email admin@example.com \
--agree-tos --no-eff-email
  • -w gibt den DocumentRoot an (z. B. aus Ihrer Apache-/Nginx-Konfiguration).
  • Port 80 muss erreichbar sein.
  • Für mehrere Domains einfach weitere -d Parameter angeben.

Zertifikatsdateien

Nach erfolgreicher Ausstellung finden Sie die Daten unter:

/etc/letsencrypt/live/example.com/
├── fullchain.pem # Zertifikat + Zwischenzertifikate
└── privkey.pem # Privater Schlüssel

Konfiguration in Nginx

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

Ändern Sie anschließend die Serverkonfiguration und laden Sie den Webserver neu:

sudo systemctl reload nginx

Automatische Erneuerung einrichten

Let’s Encrypt-Zertifikate sind 90 Tage gültig.

Erneuerung testen:

sudo certbot renew --dry-run

Automatische Erneuerung mit systemd aktivieren (bei Snap-Installation standardmäßig vorhanden):

sudo systemctl enable --now certbot.timer

Alternativ Cronjob:

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

Wildcard-Zertifikate (DNS-Challenge)

Für Zertifikate wie *.example.com ist eine DNS-Validierung nötig:

sudo certbot certonly --manual \
--preferred-challenges=dns \
-d example.com -d '*.example.com'

Fügen Sie den von Certbot angezeigten TXT-Record in Ihre DNS-Zone ein.
Für automatische DNS-Updates können Sie ein Plugin wie certbot-dns-cloudflare nutzen.

Häufige Fehler und Lösungen

  • Challenge fehlgeschlagen
    • Prüfen, ob Port 80 erreichbar und nicht auf HTTPS umgeleitet ist.
    • Webroot-Verzeichnis muss für den Webserver-Benutzer (z. B. www-data) beschreibbar sein.
    • CDN oder WAF könnte die .well-known/acme-challenge-Anfrage blockieren.
  • Rate Limits erreicht
  • Falscher Webroot
    • Der in -w angegebene Pfad muss exakt dem DocumentRoot Ihrer VirtualHost-/Server-Block-Konfiguration entsprechen.

Checkliste vor Go-Live

  •  Test der Zertifikatsausstellung (--dry-run) erfolgreich
  •  Ports 80/443 offen und erreichbar
  •  Zertifikatsdateien korrekt in Webserver eingebunden
  •  Automatische Erneuerung eingerichtet und getestet
  •  HTTPS-Erzwingung in Serverkonfiguration aktiviert
  •  Optional: HSTS-Header setzen, Cipher-Suite prüfen

Wenn Sie Hilfe bei der Einrichtung oder Optimierung Ihrer TLS-Konfiguration wünschen, inklusive HSTS, Cipher-Hardening und OCSP-Stapling, kontaktieren Sie uns über unser Kontaktformular mit Ihrer Domain. Wir erstellen Ihnen gerne einen kurzen Audit-Plan.

Weitere interessante Artikel finden Sie in unserem Blog.