Tutorials

Let's Encrypt SSL einrichten

Let's Encrypt stellt kostenlose SSL/TLS-Zertifikate bereit, damit du deine Websites über HTTPS ausliefern kannst. Diese Anleitung zeigt, wie du Certbot installierst und Zertifikate für Nginx oder Apache auf Ubuntu und Debian erhältst.

Voraussetzungen

  • Ein VPS mit Ubuntu 20.04+ oder Debian 11+
  • Nginx oder Apache installiert — deine Website muss auf Port 80 erreichbar sein
  • Ein Domainname, dessen DNS auf die IP deines Servers zeigt
  • Ports 80 und 443 offen in deiner Firewall

1. Mit deinem Server verbinden

ssh root@DEINE_SERVER_IP

Oder verwende das Web-Terminal im Sitequest-Dashboard.

2. Certbot installieren

Am einfachsten geht die Installation über snap:

apt update
apt install -y snapd
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot

3. Zertifikat erhalten

Für Nginx

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

Certbot wird automatisch:

  1. Prüfen, ob du Inhaber der Domain bist (per HTTP-Challenge auf Port 80)
  2. Das Zertifikat von Let's Encrypt erhalten
  3. Deine Nginx-Konfiguration automatisch für HTTPS anpassen
  4. Eine Weiterleitung von HTTP auf HTTPS einrichten

Für Apache

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

Der Ablauf ist der gleiche — Certbot erkennt deine Apache Virtual Hosts und konfiguriert SSL automatisch.

4. HTTPS testen

Nachdem Certbot fertig ist, besuche https://example.com im Browser. Du solltest ein gültiges Zertifikat sehen — ohne Warnungen.

Alternativ kannst du per Kommandozeile testen:

curl -I https://example.com

In der Ausgabe sollte HTTP/2 200 stehen, ohne Zertifikatfehler.

5. Automatische Verlängerung

Let's-Encrypt-Zertifikate laufen nach 90 Tagen ab. Certbot installiert einen systemd-Timer (oder Cron-Job), der sie automatisch erneuert. Prüfe, ob der Timer aktiv ist:

systemctl list-timers | grep certbot

Teste die Verlängerung, ohne Änderungen vorzunehmen:

certbot renew --dry-run

Wenn der Testlauf erfolgreich ist, werden deine Zertifikate automatisch vor Ablauf erneuert.

6. Manueller Nur-Zertifikat-Modus

Wenn du ein Zertifikat erhalten möchtest, ohne deine Webserver-Konfiguration zu ändern:

certbot certonly --webroot -w /var/www/html -d example.com

Die Zertifikatsdateien werden in /etc/letsencrypt/live/example.com/ gespeichert:

Datei Zweck
fullchain.pem Zertifikat + Zwischenkette
privkey.pem Privater Schlüssel
cert.pem Nur Zertifikat
chain.pem Nur Zwischenkette

Binde diese manuell in deine Nginx- oder Apache-Konfiguration ein.

Nginx-SSL-Konfiguration

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

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

    # Moderne SSL-Einstellungen
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers off;

    # HSTS (optional, empfohlen)
    add_header Strict-Transport-Security "max-age=63072000" always;
}

7. Wildcard-Zertifikate

Um ein Wildcard-Zertifikat (z.B. *.example.com) zu erhalten, verwende die DNS-Challenge:

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

Certbot wird dich auffordern, einen TXT-DNS-Eintrag zu erstellen. Das kannst du über den Sitequest DNS-Manager tun. Warte nach dem Hinzufügen kurz auf die DNS-Propagierung und drücke dann Enter.

Fehlerbehebung

"Challenge failed"-Fehler:

  • Stelle sicher, dass der A-Record deiner Domain auf die IP deines Servers zeigt
  • Stelle sicher, dass Port 80 offen ist und dein Webserver läuft
  • Prüfe, ob ein anderer Dienst Port 80 blockiert

"Too many certificates"-Fehler:

  • Let's Encrypt hat Rate Limits: 50 Zertifikate pro Domain pro Woche
  • Verwende beim Testen das --staging-Flag, um Limits zu vermeiden

Zertifikat wird nicht erneuert:

  • Führe certbot renew --dry-run zur Diagnose aus
  • Prüfe den Systemd-Timer: systemctl status snap.certbot.renew.timer

Nächste Schritte