Automatisierung mit ACME

Angesichts immer kürzerer Gültigkeiten für SSL-Zertfikate gewinnt die automatische Ausstellung von SSL-Zertifikaten eine zunehmend wichtige Rolle. Zu diesem Zweck wurde das Automatic Certificate Management Environment (ACME) entwickelt. Dieses sieht ein Stück Software - einen ACME-Client - vor, der regelmäßig und automatisch bei einem entsprechenden ACME-Server anklopft und sich dort mit neuen Zertifikaten versorgt. Auf der Server-Seite ist hierfür ein ACME-Konto eingerichtet und hinterlegt, welches über Passwörter absichert, dass die Anfragen legitim sind und für welche FQDNs/Domains neue Zertifikate bezogen werden können.

Am ITMZ können Sie über unseren Zertifikatsservice selbsständig ACME-Konten beauftragen. Wir richten diese dann beim aktuellen Zertifikatsanbieter ein und übergeben Ihnen die notwendigen Zugangsdaten. Das Portal zur Beantragung von ACME-Konten finden Sie 

HIER

Sobald das ACME-Konto von uns genehmigt und fertig eingerichtet wurde, erhalten Sie von unserem Zertifikatsservice eine entsprechende Nachricht. Die für ein ACME-Konto notwendigen Informationen können Sie danach über unseren Zertifikatsservice einsehen.

Proof of Ownership und EAB OV

Damit ein ACME-Server SSL-Zertfikate nur für die Besitzer einer Domain ausstellt und nicht etwa für Kriminelle, die mit Ihrem System so tun wollen, als wären sie etwa ‘uni-rostock.de’, ist ein sogenannter Proof of Ownership notwendig. Dabei muss eine vorgegebene spezielle Datei an einem speziellen Ort des Servers oder ein spezieller Text im DNS-Eintrag öffentlich hinterlegt werden. Erst wenn dieser erfolgreich vom ACME-Server abgerufen wurden, gibt es ein neues Zertifikat.

Diese Praxis ist jedoch untauglich, wenn die betroffenen Server aus Sicherheitsgründen gar nicht öffentlich zugänglich sind oder keine Möglichkeit bieten, Dateien über einen Webbrowser zu veröffentlichen. Aus diesem Grund werden an der Uni Rostock nur ACME-Konten mit External Account Binding Organization Validated herausgegeben. Dabei wird der Proof of Ownershib auf uns, den Zertifikatsservice, ausgelagert und wir garantieren, dass die jeweilige Domain zur Uni Rostock gehört. Deshalb wird jeder Antrag für ein ACME-Konto manuell von uns überprüft.

ACME Renewal Information (ARI)

Mit der Erweiterung ACME Renewal Information (ARI) kann der ACME-Server dem ACME-Client mitteilen, zu welchem Zeitpunkt das SSL-Zertifikat erneuert werden soll. Dadurch kann zum Einen die Auslastung des ACME-Servers gesteuert werden und zum Anderen können Zertifikate auch frühzeitig - etwa bei einem größeren Rückruf - von außen angestoßen erneuert werden. Sie sollten deshalb darauf achten, dass Ihr ACME-Client möglichst ARI unterstützt.

ACME-Clients und Konfiguration

Für die verschiedenen Betriebssysteme gibt es eine Vielzahl verschiedener ACME-Clients mit jeweils unterschiedlichen Konfigurationsmöglichkeiten. An dieser Stelle finden Sie die gängigsten ACME-Clients mit der notwendigen Konfiguration. Sollten Sie andere ACME-Clients erfolgreich einsetzen, können Sie Ihre Erfahrungen gerne teilen, indem Sie uns die Anleitung, den Kommandozeilenaufruf aber auch eventuelle Korrekturen an cauni-rostockde schicken.

certbot certonly \
--standalone \
--non-interactive \
--agree-tos \
--email <IHRE E-MAIL> \
--eab-kid <KEY-ID> \
--eab-hmac-key <HMAC-KEY> \
--server <SERVER-URL> \
--domain fqdn1.uni-rostock.de,fqdn2.uni-rostock.de \
--key-type rsa \
--rsa-key-size 4096
--deploy-hook "apachectl -k graceful"

Die notwendigen Daten <KEY-ID>, <HMAC-KEY> und <SERVER-URL> können Sie nach der Einrichtung Ihres Kontos im Zertifikatsservice einsehen. Weitere Angaben:

  • agree-tos - die Zustimmung zu den Terms of Service muss gesetzt sein.
  • email zur eventuellen Kommunikation bei fehlgeschlagener Erneuerung muss gesetzt sein.
  • domain darf nur FQDNs enthalten, die bei der Einrichtung des Konto eingetragen wurden. Werden mehrere FQDN< eingebunden, sind diese per Kommata ohne Freizeichen zu trennen.
  • deploy-hook ist optional und kann einen Prozess nach der Erneuerung des Zertifikates anstoßen - hier ein Relaod des Webservers. Die Optionen --pre-hook und --post-hook können genutzt werden, um Aktionen vor oder nach dem Erneuerungsversuch auszuführen (bspw. Abschalten eines Dienstes, Öffnen einer Firewall…).

acme.sh --set-default-ca --server <SERVER-URL> 
acme.sh --register-account --email <IHRE EMAIL> --eab-kid <KEY-ID> --eab-hmac-key <HMAC-KEY> --server <SERVER-URL> 
acme.sh --issue -d fqdn1.uni-rostock.de -d fqdn2.uni-rostock.de --keylength 4096 --days 100 --stateless 
acme.sh --renew -d fqdn1.uni-rostock.de

Die notwendigen Daten <KEY-ID>, <HMAC-KEY> und <SERVER-URL> können Sie nach der Einrichtung Ihres Kontos im Zertifikatsservice einsehen. Weitere Angaben:

  • email zur eventuellen Kommunikation bei fehlgeschlagener Erneuerung muss gesetzt sein
  • d darf nur Domains/FQDNs enthalten, die bei der Einrichtung des Konto eingetragen wurden. Werden mehrere FQDNs eingebunden, sind diese mit jeweils eigener Option -d anzugeben. Der erste FQDN wird als cn, die weiteren als Subject Alternative Names (SAN) im Zertfikat eingetragen.
  • issue führt zum erstmaligen Ausstellen des Zertfiikates
  • renew führtzu einer Erneuerung des Zertifikates. Der angegebene FQDN gilt dabei als Identifikator der auf dem System befindlichen Zertifikate und muss mit dem CN (!) des issue-Befehls übereinstimmen. Wird automatisch durch einen cron-Job aufgerufen, kann aber auch manuell gestartet werden.

wacs.exe
  --verbose
  --baseuri <SERVER-URL>
  --accepttos
  --emailaddress <IHRE EMAIL>
  --eab-key-identifier <KEY-ID>
  --eab-key <HMAC-KEY>
  --source manual
  --host  “fqdn1.uni-rostock.de,fqdn2.uni-rostock.de”
  --commonname “fqdn1.uni-rostock.de”
  --csr rsa
  --validation none
  --store “pemfiles,certificatestore”
  --pemfilespath “C:\Temp”
  --certificatestore “Personal”
  --acl-read "network service"

Die notwendigen Daten <KEY-ID>, <HMAC-KEY> und <SERVER-URL> können Sie nach der Einrichtung Ihres Kontos im Zertifikatsservice einsehen. Weitere Angaben:

  • accepttos - die Zustimmung zu den Terms of Service muss gesetzt sein.
  • emailaddress zur eventuellen Kommunikation bei fehlgeschlagener Erneuerung muss gesetzt sein.
  • host darf nur Domains/FQDNs enthalten, die bei der Einrichtung des Kontos eingetragen wurden. Wird in Anführungszeichen angegeben. Werden mehrere FQDNs eingebunden, sind diese mit Kommata getrennt ohne Freizeichen einzutragen.
  • commonname darf nur Domains/FQDNs enthalten, die bei der Einrichtung des Konto eingetragen wurden. Muss einen Eintrag aus host enthalten.
  • store gibt an, wo die ausgestellten Zertifikate gespeichert werden sollen: pemfiles werden im Dateisystem im Pfad pemfilespath abgelegt. Wird certficatestore gewählt, so werden sie im zentralen Zertifikatsspeicher des OS im Bereich certificatestore abgelegt.
  • acl-read gibt an, wer diese Zertfikate lesen darf.

Kontakt

Zertifikatsservice
cauni-rostockde

Albert-Einstein-Str. 22
18059 Rostock

Martin Sievers-Luboschik
Tel: +49 381 498-5328

Martin Röhlig
Tel: +49 381 498-5327

Jörg Maletzky
Tel: +49 381 498-5339

Jörg Zerbe
Tel: +49 381 498-5320