Grundlagen: Automatic Certificate Management Environment (ACME)

Das ACME Protokoll wurde von den Betreibern vom Projekt Let’s Encrypt entworfen, um die Ausstellung von Webserver-Zertifikaten zu automatisieren. Es ist spezifiziert in RFC 8555.

Zielstellung ist, den Vorgang des beweisens des Besitzes der DNS Ressource (IP-Adressen können aktuell nicht identifiziert werden, ist künftig aber geplant), jedoch nicht der Person oder Organisation die dahinter steht, zu automatisieren, um anschließend ohne menschliche Interaktion ein Webserver-Zertifikat beziehen zu können.

Die Motivation zur Entwicklung dieses Protokolls entstand, da die bestehenden Zertifizierungsstellen proprietäre, nicht automatisierbare Prozesse verwendeten, die entsprechend fehleranfällig waren und es somit zu Fehlausstellungen kam. Ebenfalls soll durch die Automatisierung das Benutzer-Erlebnis verbessert und ein höherer Verbreitungsgrad der SSL-Nutzung bei Webservern erreicht werden.

Funktionsweise

Über das ACME Protokoll können Antragsteller für die in ihrem Besitz befindlichen DNS-Identitäten vollautomatisch Zertifikate beantragen und auch sperren.

Die Nachrichten werden in JSON formatiert, per UTF8 kodiert und per HTTPS übertragen. Die JSON Nachrichten verwenden JSON Web Security (JWS), um Anti-Replay, Authentisierung der Nachrichten und Integritättschutz zu gewährleisten. Binäre Daten werden in BASE64 kodiert.

In der Kommunikation gibt es die Rollen "Client" (Antragsteller) und "Server" (die ACME-Server-Instanz, das RFC spricht in diesem Fall auch von der Zertifizierungsstelle, wobei es sich genaugenommen nur um eine Registration Authority bzw. eine Schnittstelle handelt).

Zertifikatantrag

Es ist vorgesehen, dass durch den Client aus mehreren ACME-aktivierten Zertifizierungsstellen gewählt werden kann.

Der Ablauf gestaltet sich wie folgt:

  1. Anlegen eines Kontos (newAccount). Hierbei können optional Kontaktinformationen hinterlegt werden und eine Zustimmung zu den Bedingungen der PKI werden. Die Anfrage zur Kontenerstellung ist mit einem zuvor generierten privaten Schlüssel signiert.
  2. Bestellen eines Zertifikates (newOrder).
  3. Besitz der in der Bestellung enthaltenen Identitiäten beweisen (die Wege, dies zu tun werden vom Server als Antwort auf die zuvor eingegangene Bestellung bestimmt).
  4. Zertifikatanforderungen senden.
  5. Ausstellung des Zertifikats beantragen und Zertifikat abholen/herunterladen.

Der ACME-Server tritt bei der Verifikation der Identitäten kurzzeitig als HTTP- bzw. DNS-Client auf.

Sperrantrag

Ebenfalls ist es möglich, mit ACME die Sperrung eines zuvor ausgestellten Zertifikats zu beantragen.

  1. Senden eines signierten Sperrantrags (revokeCert).
  2. Der ACME-Server teilt das Ergebnis mit.

Zertifikaterneuerung

Durch die Anlage eines Kontos kann eine Kontaktinformation und eine Verknüpfung zwischen dem Antragsteller und dem ausgestellten Zertifikat hergestellt werden. Dies ermöglicht beispielsweise die Benachrichtigung des Antragstellers, wenn das Zertifikat sich dem Ende seines Gültigkeitszeitraumes nähert.

Der Antragsteller kann somit daran erinnert werden, das Zertifikat rechtzeitig erneuern. Eine Benachrichtigung bei Zertifikatablauf ist allerdings keine Pflicht und auch nicht in jedem Fall notwendig, da die Zertifikaterneuerung auch proaktiv (und automatisiert) durch den Antragsteller erfolgen kann.

Was ACME nicht leisten kann

Das ACME Protokoll kann nicht feststellen, ob ein Angreifer eine DNS-Domäne oder einen einzelnen Host unter seine Kontrolle gebracht hat. Es werden Zertifikate ausgestellt, wenn die geforderte Beweisführung erfolgreich ist. Daher eignet es sich nicht für alle Anwendungsfälle. Eine erweiterte Validierung (engl. "Extended Validation", EV) kann mit dem Protokoll nicht abgebildet werden.

Das ACME Protokoll nimmt an, dass der Service kostenfrei erbracht wird. Entsprechend gibt es keine Methodik, eine Abrechenbarkeit zu implementieren. Durch die benötigte Anlage eines Kontos vor Zertifikatausstellung könnte eine solche Logik allerdings durch Eigenentwicklung implementiert werden.

ACME für Active Directory Certificate Services

Eine ACME Schnittstelle ist auch für eine interne Zertifizierungsstelle sehr von Vorteil. Eine Automatisierung der Beantragung und Ausstellung von Webserver-Zertifikaten verbessert die Benutzererfahrung und die Akzeptanz für den Einsatz von HTTPS, entlastet die PKI-Mitarbeiter und minimiert Fehler bei der Zertifikatausstellung.

Die Active Directory Certificate Services bringen allerdings von Haus aus leider keine Unterstützung für das ACME Protokoll mit. Es gibt kommerzielle Lösungen wie certACME von Secardeo oder xc von essendi it, welche diese Lücke füllen können.

Es existiert mit ACME-Server-ADCS auch eine quelloffene Lösung, die auf GitHub veröffentlicht wurde. Bitte beachten, dass das Projekt nur für Studienzwecke kostenfrei genutzt werden darf. Für die kommerzielle Verwendung muss eine Lizenz vom Urheber erworben werden.

Weiterführende Links:

Externe Quellen