Inhaltsverzeichnis

ACME

ACME Clients

Zum Bezug von Zertifikaten per ACME stehen eine Fülle von clients zur Verfügung. Neben dem bekannten certbot können auch andere Clients wie acme.sh oder win-acme verwendet werden.

Einzige Voraussetzung: Es muss ein Mechanismus namens „External Account Binding“ unterstützt werden (bei GetSSL beispielsweise mit Stand 09/2021 nur mit einem Patch).

ACME-Accounts

Zur Nutzung von ACME müssen im cert-manager.com spezielle ACME-Accounts angelegt werden. Hierzu muss unter ☰→Enrollment→ACME zu einem der ACME-Endpoints der Button Accounts betätigt werden. Dann per Button Add einen neuen Account anlegen.

Nach dem Anlegen hat ein Account zunächst den Zustand pending. Sobald der Account mit einem ACME-Client verwendet wurde, wechselt er in den Zustand valid.

Domains in ACME-Accounts

Einem ACME-Account müssen vor dessen Nutzung bereits delegierte Domains zugeordnet werden. Die Domains müssen nicht notwendigerweise bereits validiert sein.

Es ist zu beachten, dass einem ACME-Account keine Stern-Domains (z.B. *.example.org) zugeordnet werden dürfen. Die Zuordnung von solchen Stern-Domains hat im Kontext von ACME-Accounts keinen weiteren „Wildcard-Effekt“.

Die Zuordnung von Nicht-Stern-Domains (z.B. example.org) genügt im Kontext von ACME-Accounts bereits vollständig aus, um sowohl Zertifikate für die eingetragene Domain selbst (in diesem Beispiel also example.org) als auch für alle unterhalb von der explizit eingetragenen Domain möglichen FQDNs (auch unter Sub-Domains) (z.B. www.example.org und blog.it.example.org) per ACME auszustellen. Siehe auch Schutz von ACME-Accounts.

Eine häufige Fehlermeldung durch einen ACME-Client im Zusammenhang mit fälschlich zugewiesenen Stern-Domains im ACME-Kontext ist The client lacks sufficient authorization…. Weitere Details dazu finden sich auch in der SCM-Knowledgebase unter https://sectigo.com/knowledge-base/detail/Sectigo-Certificate-Manager-SCM-ACME-error-The-client-lacks-sufficient-authorization/kA03l00000117Sy.

Schutz von ACME-Accounts

Die Daten eines ACME-Accounts (konkret die Werte eab-kid und eab-hmac-key) sollten mindestens wie private Schlüssel für Serverzertifikate behandelt und geschützt werden. Dies gilt auch für die Daten in der Installation des ACME-Clients, z.B. das Verzeichnis /etc/letsencrypt.

Je nach Domains, die dem ACME-Account zugewiesen wurden, hat eine Komprimittierung des Accounts oder der Installationsdaten sogar deutlich größere Auswirkungen. Denn: In ACME-Accounts können für alle zugewiesenen einfachen Domainnamen beliebige Zertifikate unter weiteren Sub-Domains ausgestellt werden.

Beispiel: Wenn Sie für Ihren Haupt-Webserver Zertifikate für example.org und www.example.org benötigen und einen entsprechenden ACME-Account mit diesen zugewiesenen Domainnamen erstellen, erlauben Sie automatisch die Ausstellung von Zertifikaten auf weiteren beliebigen Sub-Domains wie internal.it.example.org.

Dieser ACME-Account ist dann je nach Risikoanalyse nicht unbedingt dafür geeignet, in einer ausgelagerten Hosting-Umgebung betrieben zu werden, und sollte eher auf einer spezialisierten, geschützten „cerbot-Maschine“ verwendet werden.

Ausstellen

Vorausgesetzt, dass die dem Account zugewiesene Domain validiert und delegiert ist, können direkt im Anschluss Zertifikate erzeugt werden:

certbot certonly --standalone --non-interactive --agree-tos --email <Email-Adresse> --server <Sectigo-Server> --eab-kid <Wert von eab-kid> --eab-hmac-key <Wert von eab-hmac-key> --domain <FQDN> 

Es können für beliebig viele FQDNs, die innerhalb der dem Account zugewiesenen Domains liegen, Zertifikate erstellt werden.

Da die ACME-Accounts in der Regel unlimitierte Fähigkeiten zum Ausstellen von Zertifikaten haben, ist sorgfältig abzuwägen ob die Account-Infomationen zwischen mehreren Servern geteilt werden sollten oder aber besser mit separaten ACME-Accounts gearbeitet werden soll.

Ein Ansible-Gerüst zum zentralen Erstellen eines ACME-Accounts per REST-API und zum Bezug von Zertifikaten per ACME findet sich unter: https://github.com/francescm/acme-ansible-debian-sectigo

ACME-Zertifikate sperren

Per ACME ausgestellte Zertifikate können per ACME-Client (z.B. certbot) gesperrt werden. certbot benötigt Zugriff auf die Account-Informationen von der initialen Ausstellung des Zertifikats. Wenn diese Voraussetzung gegeben ist, kann folgendermaßen gesperrt werden:

certbot revoke --cert-path <Pfad zum zu sperrenden Zertifikat> --server <Sectigo-Server>

Eine Sperrung per Cert-Manager ist auch möglich. Der unverständliche Informationsdialog kann ignoriert werden.

ACME-Fehlermeldungen

The identifiers are not all linked to the same preauthorized Subject organization name/address

Certbot meldet The identifiers are not all linked to the same preauthorized Subject organization name/address. Geben Sie certbot explizit die Account-ID mit der Option –account ACCOUNT_ID mit oder räumen Sie im certbot-Verzeichnis /etc/letsencrypt/accounts/acme.sectigo.com auf und löschen Sie dort überflüssiges.