ACME (Automated Certificate Management Environment) ist das Protokoll, das kostenlose, automatisierte SSL-Zertifikate ermoeglicht. Es ist die Art und Weise, wie Let’s Encrypt — und Ihr ACME-Client (GetHTTPS, Certbot, acme.sh) — tatsaechlich mit der Zertifizierungsstelle kommuniziert.
Definiert in RFC 8555, ersetzte ACME den alten manuellen Prozess (CSRs per E-Mail an eine CA senden, auf manuelle Pruefung warten) durch ein vollstaendig automatisiertes, kryptografisch sicheres Protokoll.
Wie ACME funktioniert — die 5 Schritte
┌──────────┐ ┌──────────────┐
│ Client │ ① Account Registration │ CA Server │
│ (GetHTTPS)│ ──────────────────────────→ │ (Let's Encrypt)
│ │ ② New Order (domains) │ │
│ │ ──────────────────────────→ │ │
│ │ ③ Complete Challenges │ │
│ │ ←─────────────────────────── │ │
│ │ ──────────────────────────→ │ │
│ │ ④ Finalize (send CSR) │ │
│ │ ──────────────────────────→ │ │
│ │ ⑤ Download Certificate │ │
│ │ ←─────────────────────────── │ │
└──────────┘ └──────────────┘
Schritt 1: Kontoregistrierung
Der Client erzeugt ein ACME-Kontoschlüsselpaar und registriert den öffentlichen Schlüssel bei der CA. Dieser Schlüssel identifiziert Sie bei zukünftigen Anfragen — jede ACME-Nachricht wird damit signiert.
Keine E-Mail, kein Passwort, keine persönlichen Daten erforderlich.
Schritt 2: Neue Bestellung
Der Client übermittelt eine Liste von Domainnamen, für die ein Zertifikat gewünscht wird. Die CA erstellt eine „Bestellung” und gibt eine Reihe von „Autorisierungen” zurück — eine pro Domain — jeweils mit zu erledigenden Challenges.
Schritt 3: Challenges abschliessen
Für jede Domain muss der Client die Kontrolle nachweisen. Die CA bietet verschiedene Challenge-Typen an:
| Challenge | Funktionsweise | Anwendungsfall |
|---|---|---|
| HTTP-01 | Eine Datei unter /.well-known/acme-challenge/ ablegen | Am häufigsten, am einfachsten |
| DNS-01 | Einen TXT-Eintrag bei _acme-challenge.domain hinzufügen | Wildcards, kein Port 80 |
| TLS-ALPN-01 | Auf Port 443 mit einem speziellen TLS-Zertifikat antworten | Wenn Port 80 blockiert ist, kein DNS-Zugriff |
Der Client schliesst die Challenge ab und fordert die CA zur Überprüfung auf. Die CA prüft von ihren Servern aus — wenn die Challenge bestanden ist, wird die Autorisierung als gültig markiert.
Schritt 4: Finalisierung (CSR senden)
Nachdem alle Domains autorisiert sind, sendet der Client einen CSR (Certificate Signing Request) mit dem öffentlichen Schlüssel für das Zertifikat. Die CA signiert ihn und erstellt das Zertifikat.
Schritt 5: Zertifikat herunterladen
Der Client lädt die signierte Zertifikatskette herunter — Ihr Zertifikat + das Zwischenzertifikat der CA. Fertig.
ACME-Sicherheitsmodell
Jede ACME-Anfrage wird mit JWS (JSON Web Signature) unter Verwendung des Kontoschlüssels signiert. Dies verhindert:
- Replay-Angriffe — jede Anfrage hat eine eindeutige Nonce
- Manipulation — die Signatur deckt den gesamten Anfragekörper ab
- Identitätsdiebstahl — nur der Inhaber des Kontoschlüssels kann Anfragen stellen
Der Kontoschlüssel verlässt niemals den Client. Bei GetHTTPS wird er in Ihrem Browser über die Web Crypto API generiert.
Wie GetHTTPS ACME nutzt
GetHTTPS implementiert das vollständige ACME-Protokoll in JavaScript, das in Ihrem Browser läuft:
- Kontoschlüssel wird mit
crypto.subtle.generateKey()(Web Crypto API) generiert - Zertifikatsschlüssel wird auf die gleiche Weise generiert
- ACME-Nachrichten werden mit
crypto.subtle.sign()signiert - CSR wird mit der pkijs-Bibliothek erstellt
- Direkte HTTPS-Kommunikation mit
acme-v02.api.letsencrypt.org
Kein serverseitiger Proxy, keine Middleware. Ihr Browser kommuniziert direkt mit der ACME-API von Let’s Encrypt. Das ist einzigartig — die meisten ACME-Clients laufen auf einem Server.
ACME-Clients im Vergleich
| Client | Läuft in | ACME v2 | Automatische Erneuerung | Sprache |
|---|---|---|---|---|
| GetHTTPS | Browser | ✅ | ❌ Manuell | JavaScript |
| Certbot | Server CLI | ✅ | ✅ | Python |
| acme.sh | Server CLI | ✅ | ✅ | Shell |
| Caddy | Webserver | ✅ | ✅ | Go |
| Traefik | Reverse Proxy | ✅ | ✅ | Go |
| Lego | CLI-Bibliothek | ✅ | ✅ | Go |
CAs, die ACME unterstützen
ACME wurde von Let’s Encrypt entwickelt, ist aber mittlerweile ein offener Standard, der von mehreren CAs verwendet wird:
| CA | ACME Directory URL | Kostenlos? |
|---|---|---|
| Let’s Encrypt | acme-v02.api.letsencrypt.org/directory | ✅ |
| ZeroSSL | acme.zerossl.com/v2/DV90 | Begrenzt kostenlos |
| Buypass | api.buypass.com/acme/directory | ✅ |
| Google Trust Services | Via Google Cloud ACME | ✅ |
| DigiCert | Enterprise ACME Endpoint | Kostenpflichtig |
| Sectigo | Enterprise ACME Endpoint | Kostenpflichtig |
Häufig gestellte Fragen
Ist ACME dasselbe wie Let’s Encrypt?
Nein. ACME ist das Protokoll (RFC 8555). Let’s Encrypt ist eine Zertifizierungsstelle, die ACME verwendet. Auch andere CAs (ZeroSSL, Buypass, Google) unterstützen ACME. Stellen Sie es sich vor wie HTTP vs. Google — HTTP ist das Protokoll, Google ist ein Dienst, der es nutzt.
Kann ich meinen eigenen ACME-Client implementieren?
Ja. Das Protokoll ist vollständig in RFC 8555 spezifiziert. GetHTTPS ist ein Beispiel für eine browserbasierte Implementierung. Bibliotheken existieren für die meisten Programmiersprachen (certbot für Python, lego für Go, acme.js für JavaScript).
Was ist ACME v2?
ACME v2 ist die aktuelle Version (RFC 8555), die Wildcard-Zertifikatsunterstützung hinzufügte und das Entwurfs-v1-Protokoll ersetzte. Alle modernen ACME-Clients verwenden v2. Let’s Encrypt hat den v1-Endpunkt 2021 abgeschaltet.
Was passiert, wenn der ACME-Server ausfällt?
Bestehende Zertifikate funktionieren weiterhin (sie kontaktieren nicht den Server). Sie können lediglich keine neuen Zertifikate ausstellen oder erneuern, bis der Server wiederhergestellt ist. Let’s Encrypt hat eine hohe Verfügbarkeit und eine redundante Infrastruktur.