4. Protocol Overview (Protokollübersicht)
ACME ermöglicht es Clients, Zertifikatsverwaltungsoperationen über eine Reihe von JavaScript Object Notation (JSON) Nachrichten [RFC8259] anzufordern, die über HTTPS [RFC2818] übertragen werden. Der Ausstellungsprozess mit ACME ähnelt dem einer traditionellen CA, bei dem ein Benutzer ein Konto erstellt, ein Zertifikat anfordert und die Kontrolle über die Domainnamen in diesem Zertifikat nachweist, damit die CA das angeforderte Zertifikat ausstellt.
Die erste Phase von ACME besteht darin, dass der Client beim ACME-Server ein Konto anfordert. Der Client generiert ein asymmetrisches Schlüsselpaar und fordert ein neues Konto an, wobei er optional Kontaktinformationen bereitstellt, den Nutzungsbedingungen (Terms of Service, ToS) zustimmt und/oder das Konto mit einem bestehenden Konto in einem anderen System verknüpft. Die Erstellungsanforderung wird mit dem generierten privaten Schlüssel signiert, um zu beweisen, dass der Client ihn kontrolliert.
Client Server
[Kontaktinformationen]
[ToS-Zustimmung]
[Zusätzliche Daten]
Signatur ------->
Konto-URL
<------- Kontoobjekt
[] Von Anforderungssignaturen abgedeckte Informationen
Kontoerstellung
Sobald die Kontoregistrierung abgeschlossen ist, muss der Client vier Hauptschritte unternehmen, um ein Zertifikat zu erhalten:
-
Einreichen einer Zertifikatsausstellungsbestellung (Order)
-
Nachweis der Kontrolle über alle im Zertifikat angeforderten Identifikatoren (Identifiers)
-
Abschluss der Bestellung durch Einreichen eines CSR
-
Warten auf die Ausstellung und Herunterladen des ausgestellten Zertifikats
Die Zertifikatsbestellung des Clients beschreibt die gewünschten Identifikatoren sowie einige zusätzliche Felder, die Semantiken erfassen, die das CSR-Format nicht unterstützt. Wenn der Server bereit ist, die Ausstellung eines solchen Zertifikats in Betracht zu ziehen, antwortet er mit einer Liste von Anforderungen, die der Client erfüllen muss, bevor das Zertifikat ausgestellt wird.
In den meisten Fällen wird der Server beispielsweise verlangen, dass der Client nachweist, dass er die Identifikatoren im angeforderten Zertifikat kontrolliert. Da es viele verschiedene Methoden gibt, den Besitz verschiedener Identifikatortypen zu validieren, wählt der Server aus einem erweiterbaren Satz von Herausforderungen, die für den beanspruchten Identifikator geeignet sind. Der Client verwendet eine Reihe von Antworten, um dem Server mitzuteilen, welche Herausforderungen der Client abgeschlossen hat. Der Server überprüft dann, ob der Client die Herausforderungen abgeschlossen hat.
Sobald der Validierungsprozess abgeschlossen ist und der Server zufrieden ist, dass der Client seine Anforderungen erfüllt hat, schließt der Client die Bestellung durch Einreichen einer PKCS#10 Zertifikatsignierungsanforderung (Certificate Signing Request, CSR) ab. Der Server stellt das angeforderte Zertifikat aus und macht es für den Client verfügbar.
Client Server
[Bestellung]
Signatur ------->
<------- Erforderliche Autorisierungen
[Antworten]
Signatur ------->
<~~~~~~~~Validierung~~~~~~~~>
[CSR]
Signatur ------->
<------- Bestätigung
<~~~~~~Warten auf Ausstellung~~~~~~>
[POST-as-GET-Anforderung]
Signatur ------->
<------- Zertifikat
[] Von Anforderungssignaturen abgedeckte Informationen
Zertifikatsausstellung
Um ein Zertifikat zu widerrufen, sendet der Client eine signierte Widerrufanforderung, die das zu widerrufende Zertifikat angibt:
Client Server
[Widerrufanforderung]
Signatur -------->
<-------- Ergebnis
[] Von Anforderungssignaturen abgedeckte Informationen
Zertifikatswiderruf
Obwohl ACME im Prinzip flexibel genug definiert ist, um verschiedene Arten von Identifikatoren zu handhaben, ist der primäre Anwendungsfall, den dieses Dokument behandelt, die Verwendung von Domainnamen als Identifikatoren. Beispielsweise beziehen sich alle in Abschnitt 8 beschriebenen Identifikatorvalidierungsherausforderungen auf die Domainvalidierung. Die Verwendung von ACME für andere Identifikatoren würde weitere Spezifikationen erfordern, um zu beschreiben, wie diese Identifikatoren im Protokoll kodiert werden und welche Arten von Validierungsherausforderungen der Server möglicherweise benötigt.