Serverzertifikate über DFN-PKI
ACME Konfiguration

Wenn Sie über das ACME Formular Zugangsdaten von uns erhalten haben, können Sie über verschiedene ACME-Clients Zertifikate ausstellen lassen.

Dafür erhalten Sie von uns für jeden Account eine key-id und einen hmac-key.

Details zum ACME-Protokoll finden Sie in der Protokollspezifikation.

Allgemeine Informationen zur Verwendung von ACME in TCS finden Sie auch im DFN-Wiki zu dem Thema.

Wichtig ist, dass der verwendete ACME-Client das Feature External Account Binding unterstützt. Damit wird Ihr ACME-Client mit den von uns in TCS angelegten Konto verknüpft und erhält die Berechtigung, Zertifikate für die freigegebenen Hostnamen auszustellen.

Unten stehend finden Sie Anleitungen zu speziellen ACME-Clients. Sollten Sie erfolgreich einen anderen Client konfiguriert haben, würden wir uns über Hinweise freuen.

Folgend eine Kurzanleitung wie man per certbot über ACME Zertifikate ausstellt. Details beschreibt die cerbot Dokumentation.

Je nach Setup müssen die Commands alle per sudo ausgeführt werden. Man kann aber auch mit den Parametern --config-dir, --work-dir und --logs-dir Nutzerverzeichnisse angeben und die Befehle dann mit einem unpriviligierten User ausführen.

Schritt 1 – registrieren
Zunächst müssen Sie den ACME-Account erstellen und mit den von uns erstellen Zugangsdaten verknüpfen. Dazu führen Sie den folgenden Befehl aus:
certbot register --agree-tos --no-eff-email --email <kontakt-mail> --server https://acme.sectigo.com/v2/OV --eab-kid <key-id> --eab-hmac-key <hmac-key>

Die Werte für <key-id> und <hmac-key> erhalten Sie von uns per E-Mail.

Bei dem Wert <kontakt-mail> handelt es sich um eine Kontakt-Adresse für den Account. Diese wird auch über das Ablaufen informiert. Daher sollten Sie hier möglichst eine Funktionsadresse angeben.

Schritt 2 – ausstellen
Danach können Sie beliebig Zertifikate für die von uns freigegebenen Hostnamen (<domain>) ausstellen. Dazu verwenden Sie erstmalig folgenden Befehl:
certbot certonly --standalone --non-interactive --server https://acme.sectigo.com/v2/OV --domain <domain> --cert-name <certname>

<certname> ist ein frei wählbarer Bezeichner für dieses Zertifikat. Er bestimmt z.B. wo die privaten Schlüssel und Zertifikate durch den Befehl erstellt bzw. abgelegt werden. Diese finden Sie nach ausführen des Befehls in der Regel unter /etc/letsencrypt/live/<certname>.
Außerdem kann damit ein einzelnes Zertifikat erneuert oder revoked werden.

Schritt 3 – verlängern
Die automatische Verlängerung wird bei Certbot dadurch implementiert, dass Sie den Befehl certbot renew -q z.B. per cron in regelmäßigen Abständen ausführen. Dieser prüft ob ein Zertifikat zur Verlängerung ansteht und verlängert entsprechend. Für die weitere Automatisierung sind auch die „*-hook“ Optionen interessant, die man unter certbot -h renew einsehen kann.

Folgende eine Kurzanleitung wie man per acme.sh Zertifikate ausstellt. (Danke an Jochen Becker vom TUDa-CERT für die Anleitung.)

Schritt 1 – Installation

Die Allgemeine Installationsanleitung beschreibt den Prozess, gilt jedoch für zero ssl (default) bzw lets encrypt daher folgende Abweichung: KEINE Angabe einer E-Mail-Adresse zu diesem Zeitpunkt und den Hinweis ignorieren

Als root user (klare Empfehlung)

curl https://get.acme.sh | sh -s

Oder

git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
acme.sh --install

In der Dokumentation gibt es weiter 4 Wege der Installation.

Schritt 2 – Geant Server als Default einstellen

acme.sh --set-default-ca --server https://acme.sectigo.com/v2/OV

Schritt 3 – Account einmalig registrieren

acme.sh --register-account --email „<kontakt-mail>“ --eab-kid „<key-id>“ --eab-hmac-key „<hmac-key>“ --server https://acme.sectigo.com/v2/OV

Die Werte für <key-id> und <hmac-key> erhalten Sie von uns per E-Mail.

Bei dem Wert <kontakt-mail> handelt es sich um eine Kontakt-Adresse für den Account. Diese wird auch über das Ablaufen informiert. Daher sollten Sie hier möglichst eine Funktionsadresse angeben.

Schritt 4 – Ausstellen eines Zertifikats

Folgende Schritte kommen immer wieder:

Ausstellen von Zertifikaten und Abholen dieser für nur eine Domain (<domain>) ohne Subject Alternative Names

acme.sh --issue -d <domain> --keylength 4096 --days 350 --stateless

acme.sh --issue -d <domain> --keylength ec-384 --days 350 --stateless

Ausstellen von Zertifikaten und Abholen dieser für nur eine Domain (<domain>) mit zusätzlichen Subject Alternative Names

acme.sh --issue -d <domain> -d <SAN1> -d <SAN2> --keylength 4096 --days 350 --stateless

acme.sh --issue -d <domain> -d <SAN1> -d <SAN2> --keylength ec-384 --days 350 --stateless

Schritt 5 – Verlängern

Sofern die cron option (default) aktiviert ist, wird das Zertifikat automatisch verlängert und abgelegt.

Ggf. müssen Services nach einem Fileaustausch bei einem neuen Zertifikat neu geladen werden (reload, restart). Hierbei wird stetig nur das Zertifikat, nicht aber der Key oder die Chain aktualisiert.