🤖Let's Encrypt & ACME

Seit 2015 stellt Let's Encrypt kostenlose Zertifikate aus – vollautomatisch über das ACME-Protokoll (RFC 8555). Die CA prüft nicht deine Identität, sondern nur, ob du die Domain kontrollierst (Domain Validation).

🔁Ablauf als Sequenzdiagramm

Beweis über eine Datei auf Port 80 – einfach, aber keine Wildcards.
ACME-Client (certbot)CA (Let's Encrypt)Webserver :80DNSGET /directoryPOST newAccount (JWS)POST newOrder {identifiers: www.example.org}Autorisierung + Challenges (token)Datei ablegenPOST challenge-URL {}GET http://www.example.org/.well-known/acme-challenge/<token>Autorisierung: validPOST finalize {csr}Bestellung: valid + certificate-URLPOST-as-GET certificate
Schritt 1: GET /directory – Der Client holt das Verzeichnis mit allen Endpunkt-URLs (newNonce, newAccount, newOrder …).
Schritt 1 / 11 · Tasten ← →

📚 Quelle: RFC 8555 §7 (Ablauf), §8.3 (HTTP-01), §8.4 (DNS-01)

🧮Challenge-Werte selbst berechnen

Die CA schickt ein zufälliges token. Der Client verknüpft es mit dem Fingerabdruck seines Kontoschlüssels – so kann nur der Kontoinhaber die Challenge lösen.
Alles echt berechnet (WebCrypto), aber nur lokal – es wird keine CA kontaktiert.
⏳

♻️Automatische Erneuerung

certbot installiert einen systemd-Timer (oder cron-Job), der regelmäßig certbot renew ausführt. Erneuert wird, wenn die Restlaufzeit unter einer Schwelle liegt – oder wenn die CA per ARI (ACME Renewal Information, RFC 9773) ein früheres Fenster empfiehlt, etwa nach einer Massensperrung.

systemctl list-timers | grep certbot
certbot renew --dry-run
# nach erfolgreicher Erneuerung nginx neu laden:
certbot renew --deploy-hook "systemctl reload nginx"
⚠️ Typische Stolperfallen
Port 80 per Firewall gesperrt (HTTP-01 scheitert) · Weiterleitung auf eine andere Domain ohne Challenge-Pfad · DNS-01 ohne API-Zugang zum DNS · CAA-Eintrag erlaubt eine andere CA · nginx nach der Erneuerung nicht neu geladen → alter Schlüssel bleibt im Speicher, Zertifikat läuft trotzdem ab.
✅ CAA-Eintrag
Mit example.org. CAA 0 issue "letsencrypt.org" legst du im DNS fest, welche CA für deine Domain ausstellen darf. CAs müssen das vor jeder Ausstellung prüfen.