Zum Inhalt springen
Alle Artikel
Let's EncryptCertbotSSL/TLS

Let's Encrypt & Certbot: HTTPS richtig einrichten

Kostenloses SSL/TLS mit Let's Encrypt und Certbot einrichten. Schritt-für-Schritt-Anleitung für Wildcard-Zertifikate, Auto-Renewal und HSTS auf deinem Server.

7. März 20267 Min. Lesezeit

Wer heute eine Website betreibt, kommt an HTTPS nicht mehr vorbei. Suchmaschinen bevorzugen verschlüsselte Seiten, Browser markieren HTTP-Verbindungen als unsicher, und nicht zuletzt schützt TLS-Verschlüsselung die Daten deiner Nutzer. Dank Let's Encrypt und Certbot ist die Einrichtung kostenloser SSL/TLS-Zertifikate in wenigen Minuten erledigt – inklusive automatischer Verlängerung. In dieser Anleitung zeige ich dir Schritt für Schritt, wie du HTTPS auf deinem Linux-Server korrekt einrichtest, Wildcard-Zertifikate erstellst und mit HSTS für maximale Sicherheit sorgst.

Was ist Let's Encrypt?

Let's Encrypt ist eine gemeinnützige Zertifizierungsstelle (CA), die seit 2015 kostenlose SSL/TLS-Zertifikate ausstellt. Das Besondere: Der gesamte Prozess – von der Beantragung bis zur Verlängerung – lässt sich vollständig automatisieren. Die Zertifikate sind 90 Tage gültig, was kürzere Kompromittierungsfenster bedeutet und die Automatisierung quasi erzwingt.

Certbot ist der offizielle ACME-Client von Let's Encrypt. Er übernimmt die Kommunikation mit der CA, validiert deine Domain-Inhaberschaft und installiert das Zertifikat auf deinem Webserver.

Voraussetzungen

Bevor du loslegst, stelle sicher, dass folgende Punkte erfüllt sind:

  • Ein Linux-Server (Ubuntu/Debian oder CentOS/RHEL) mit Root-Zugriff
  • Eine registrierte Domain, die per DNS auf deinen Server zeigt
  • Ein installierter Webserver (Nginx oder Apache)
  • Offene Ports 80 (HTTP) und 443 (HTTPS) in der Firewall

Prüfe die Firewall-Einstellungen mit:

sudo ufw status
sudo ufw allow 'Nginx Full'

Certbot installieren

Die Installation von Certbot erfolgt am besten über snap, da so immer die aktuellste Version verfügbar ist.

Installation via Snap (empfohlen)

sudo apt update
sudo apt install snapd
sudo snap install core && sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

Alte Pakete entfernen

Falls du zuvor Certbot über apt installiert hattest, entferne die alte Version zuerst:

sudo apt remove certbot
sudo apt autoremove

Überprüfe anschließend die installierte Version:

certbot --version

Zertifikat für Nginx einrichten

Der einfachste Weg zum SSL/TLS-Zertifikat führt über das Nginx-Plugin von Certbot. Es erledigt sowohl die Validierung als auch die Konfiguration automatisch.

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

Certbot wird dich nach einer E-Mail-Adresse fragen (für Ablauf-Benachrichtigungen) und ob HTTP-Traffic automatisch auf HTTPS umgeleitet werden soll. Wähle hier Redirect – das ist in den allermeisten Fällen die richtige Wahl.

Was Certbot im Hintergrund macht

Nach erfolgreicher Ausführung hat Certbot folgende Änderungen an deiner Nginx-Konfiguration vorgenommen:

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/example.com/html;
    index index.html;
}

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

Teste die Konfiguration und lade Nginx neu:

sudo nginx -t
sudo systemctl reload nginx

Zertifikat für Apache einrichten

Für Apache-Nutzer funktioniert der Ablauf analog:

sudo certbot --apache -d example.com -d www.example.com

Certbot passt die Apache-VirtualHost-Konfiguration automatisch an und aktiviert die nötigen SSL-Module.

Wildcard-Zertifikate mit DNS-Challenge

Ein Wildcard-Zertifikat sichert alle Subdomains einer Domain ab (z. B. *.example.com). Dafür ist eine DNS-01-Challenge erforderlich, da Let's Encrypt die Kontrolle über die gesamte Domain verifizieren muss.

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

Certbot fordert dich auf, einen TXT-Record in deinem DNS anzulegen:

_acme-challenge.example.com  TXT  "zufälligerTokenWert123..."

Warte nach dem Anlegen des Records 2–5 Minuten, bis die DNS-Propagation abgeschlossen ist. Prüfe das mit:

dig -t TXT _acme-challenge.example.com

DNS-Challenge automatisieren

Für die automatische Verlängerung von Wildcard-Zertifikaten benötigst du ein DNS-Plugin. Beispiel für Cloudflare:

sudo snap install certbot-dns-cloudflare

Erstelle eine Credentials-Datei:

sudo mkdir -p /etc/letsencrypt/secrets
sudo nano /etc/letsencrypt/secrets/cloudflare.ini
dns_cloudflare_api_token = dein_cloudflare_api_token_hier

Sichere die Datei ab und fordere das Zertifikat an:

sudo chmod 600 /etc/letsencrypt/secrets/cloudflare.ini

sudo certbot certonly \
  --dns-cloudflare \
  --dns-cloudflare-credentials /etc/letsencrypt/secrets/cloudflare.ini \
  -d example.com \
  -d "*.example.com"

So funktioniert das Auto-Renewal auch für Wildcard-Zertifikate vollautomatisch.

Auto-Renewal einrichten und testen

Certbot richtet bei der Installation via Snap automatisch einen Systemd-Timer oder Cron-Job für die Zertifikatsverlängerung ein. Prüfe, ob der Timer aktiv ist:

sudo systemctl status snap.certbot.renew.timer

Teste die Verlängerung im Trockenlauf:

sudo certbot renew --dry-run

Wenn dieser Befehl ohne Fehler durchläuft, ist dein Auto-Renewal korrekt konfiguriert. Certbot erneuert Zertifikate automatisch 30 Tage vor Ablauf.

Post-Renewal-Hook

Nach der Erneuerung muss der Webserver die neuen Zertifikate laden. Erstelle dafür einen Deploy-Hook:

sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
#!/bin/bash
systemctl reload nginx
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

HSTS aktivieren – HTTPS erzwingen

HTTP Strict Transport Security (HSTS) weist Browser an, deine Website ausschließlich über HTTPS aufzurufen. Das verhindert SSL-Stripping-Angriffe und beschleunigt nachfolgende Verbindungen.

Füge den Header in deiner Nginx-Konfiguration hinzu:

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    # HSTS Header - 1 Jahr Gültigkeit
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    # Weitere Sicherheits-Header
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    # ...
}

Achtung: Aktiviere includeSubDomains und preload nur, wenn du sicher bist, dass alle Subdomains dauerhaft über HTTPS erreichbar sind. Ein Zurück ist nach dem HSTS-Preloading nur schwer möglich.

SSL-Konfiguration testen

Nach der Einrichtung solltest du deine TLS-Konfiguration überprüfen. Neben Online-Tools wie dem SSL Labs Server Test kannst du auch lokal testen:

# OpenSSL-Verbindungstest
openssl s_client -connect example.com:443 -servername example.com

# Zertifikatsdetails anzeigen
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates -subject

# Certbot-Zertifikate auflisten
sudo certbot certificates

Der letzte Befehl zeigt dir alle verwalteten Zertifikate mit Ablaufdatum und zugehörigen Domains.

Häufige Fehler und Lösungen

Problem Ursache Lösung
Challenge failed Port 80 blockiert Firewall prüfen: sudo ufw allow 80
Too many requests Rate Limit erreicht 1 Stunde warten, Staging-Server zum Testen nutzen
DNS-Challenge schlägt fehl DNS noch nicht propagiert Länger warten, mit dig prüfen
Renewal fehlgeschlagen Webserver-Konfiguration geändert certbot renew --dry-run debuggen

Nutze für Tests immer die Staging-Umgebung von Let's Encrypt, um Rate Limits zu vermeiden:

sudo certbot --nginx --staging -d example.com

Fazit

Let's Encrypt und Certbot haben die Einrichtung von SSL/TLS-Zertifikaten grundlegend vereinfacht. Was früher mit Kosten und manuellem Aufwand verbunden war, erledigt heute ein einziger Befehl – inklusive automatischer Verlängerung. Mit Wildcard-Zertifikaten über die DNS-Challenge deckst du auch komplexe Setups mit mehreren Subdomains ab, und HSTS sorgt dafür, dass die Verschlüsselung nicht umgangen werden kann.

Die wichtigsten Punkte zusammengefasst: Installiere Certbot via Snap, nutze das passende Webserver-Plugin, teste das Auto-Renewal mit --dry-run und aktiviere HSTS erst, wenn HTTPS stabil läuft. Damit ist dein Server in weniger als zehn Minuten sauber mit HTTPS konfiguriert – kostenlos, automatisiert und sicher.