Server-Zertifikat in HARICA per ACME beantragen
Beantragung eines X.509-Zertifikats (TLS/SSL) für Server in HARICA automatisiert per ACME.
Verfahren
Mit ACME kann der Lifecycle eines TLS-Zertifikats automatisiert werden:
- initiale Erzeugung des privaten Schlüssels,
- Beantragung und Abholung des initialen TLS-Zertifikats beim Zertifikats-Dienstleister (hier: HARICA),
- Erneuerung des Zertifikats rechtzeitig vor Ablauf,
- Definition von Hooks, bspw. für die Verteilung eines neues Zertifikats in einem Cluster oder Dienst-Restart für die Aktivierung des neuen Zertifikats.
Vor einer Zertifikatsaustellung per ACME ist üblicherweise die Kontrolle über die beantragte Domain nachzuweisen, bspw. über eine http- oder dsn-Challenge. Bei öffentlichen Anbietern wie bspw. Letsencrypt ist dies oft der einzige Weg. Eine http-Challenge erfordert, dass eine Erreichbarkeit der Domain aus dem Internet (Port 80), eine dsn-Challenge das Setzen eines DNS-Eintrags.
Bei HARICA dagegen ist ausschließlich ACME per EAB (External Account Binding) möglich.
Für die Einrichtung eines HARICA-EAB-ACME-Accounts ist einmalig ein Antrag beim HRZ erforderlich. Das HRZ prüft den Validierungs-Status der beantragten Domains und erzeugt für Sie bei HARICA dann einen organisations-validierten (OV) ACME-Account. Mit diesem können Sie dann ohne Challenge Zertifikate für die beantragten Domains beziehen.
Die folgende Beschreibung bezieht sich ausschließlich auf AMCE mit EAB (OV) und dem verbreiteten Client certbot.
ACME-Account
Beantragung
Stellen Sie Ihren Antrag im Online-Antrag ACME-Account, dazu ist ein Login in Plone notwendig.
Für jedes Zertifikat müssen Sie einmalig einen ACME-Account beantragen. Mit diesem können Sie dann beliebig viele Zertifikate für die dem ACME-Account zugeordneten Sub-Domains beantragen.
Für unterschiedliche Dienste/Server sind auch jeweils separate ACME-Accounts zu beantragen.
Bitte geben Sie in den Formularfeldern an:
- Server-/Dienst-Namen: Dieser wird für die interne Zuordnung/Beschreibung des ACME-Accounts benötigt,
- Domains: Liste der (Sub-)Domains (Hostnamen), die als CN oder SubjectAlternateName in Ihr Zertifikat aufgenommen werden dürfen (bspw. my-server.xyz.uni-giessen.de); für Hosts außerhalb von uni-giessen.de sind evtl. zunächst Validierungen und evtl. Rückfragen nötig, was die Bearbeitung verzögern kann,
-
dienstliche Telefonnummer für Rückfragen, für den Antragsprozess ist notwendig, dass Sie auch auf Rückfragen per Rainbow reagieren!
Nach Bestätigung der Kenntnisnahme der Informationen für Zertifikatinhaber und Abschicken des Online-Formulars erhalten Sie nach Prüfung die Daten Ihres vom HRZ eingerichteten ACME-Accounts.
Das HRZ behält sich vor, Ihren Antrag abzulehnen, wenn bspw. die Domain für ACME nicht geeignet erscheint. Nicht genehmigt werden können bspw. Anträge, die von nicht-persönlichen Accounts oder von Personen, die keine Bediensteten der JLU sind, gestellt wurden.
Zugangsdaten
Vom HRZ erhalten Sie die Zugangdaten (SERVER_URL, KEY_ID, HMAC_KEY; s.u.) für Ihren ACME-Account.
Diese Zugangsdaten sind wie ein privater Schlüssel zu schützen!
Diese Zugangsdaten dürfen außerdem nur für den beantragten Host und die beantragten Domains genutzt werden!
ACME-Client
Die folgende Beschreibung bezieht sich auf den ACME-Client "certbot". Es gibt auch andere ACME-Clients, für Windows bspw. simple-acme.
Manche Software hat bereits eingebaute ACME-Funktionen (Apache mit mod_md, Traefik, Caddy); in diesen Fällen ist kein separater ACME-Client notwendig.
Bei der Auswahl Ihres ACME-Client können Aspekte wie bspw. die Aktualität des Projekts oder die Unterstützung von "ACME Renewal Information" (ARI) relevant sein: ARI wird von certbot unterstützt, von HARICA aktuell (01/2026) jedoch noch nicht.
Certbot installieren
Installieren Sie den ACME-Client certbot.
Zertifikat beziehen
Certbot legt Symlinks auf die aktuellen privaten Schlüssel und Zertifikate in /etc/letsencrypt/live/${CERT_NAME}/ (lt. Option --cert-name, s.u.) an. In der Config Ihres Dienstes werden Sie direkt auf diese verweisen.
Legen Sie in /etc/letsencrypt/renewal-hooks/ ggf. passende Skripte ab, damit nach Bezug neuer Zertifikate Ihr Dienst vom certbot ein Reload oder Restart erhält und die neuen Zertifikate damit direkt wirksam werden.
Sofern Sie einen Cluster betreiben, in denen sich mehrere Nodes das gleiche Zertifikat teilen, reicht es aus, wenn einer dieser Nodes das Zertifikat von HARICA bezieht. Per Hook (Ablage von Scripts unter /etc/letsencrypt/renewal-hooks/*/) kann dann das Zertifikat mit scp auf die anderen Nodes verteilt werden inkl. ggf. anschließendem Dienst-Neustart). Setzen Sie für einer solchen Cluster-Config außerdem in /etc/letsencrypt/renewal/myhost.sonst.uni-giessen.de.conf für "renew_before_expiry" unterschiedliche Werte auf den unterschiedlichen Nodes, damit nicht alle Node gleichzeitig eine Erneuerung anstoßen, sondern der früheste "gewinnt".
Sofern für einen ACME-Account zu viele Zertifikate bezogen werden, werden ältere evtl. von HARICA automatisch gesperrt.
Mit bspw.
certbot certonly --standalone --non-interactive --agree-tos --key-type ecdsa --elliptic-curve secp384r1 -d my-host.sonst.uni-giessen.de,my-other-host1.sonst.uni-giessen.de,my-other-host2.sonst.uni-giessen.de --email xyz@sonst.uni-giessen.de --server ${SERVER_URL} --eab-kid ${KEY_ID} --eab-hmac-key ${HMAC_KEY} --cert-name my-host.sonst.uni-giessen.de --keep-until-expiring --renew-with-new-domains --reuse-key
(die Option --email darf nicht weggelassen werden) wird
- ggf. auf Ihrem Server der private Schlüssel erzeugt (sofern er nicht bereits existiert),
- ein Zertifikats-Request bei HARICA eingereicht,
- von HARICA das Zertifikat erzeugt,
- von certbot das neue Zertifikat heruntergeladen und installiert,
- ggf. die Hooks ausgeführt.
Passen Sie den o.g. Aufruf an Ihre Bedürfnisse an. Insbesondere müssen Sie bei Option "-d" alle Hostnamen übergeben, die in das Zertifikate aufgenommen werden sollen; diese müssen auch in der Domain-Liste Ihres ACME-Accounts enthalten sein.
Zertifikat verlängern
Bei Installation von certbot wird je nach Distribution auch gleich ein Systemd-Timer angelegt, der regelmäßig die Gültigkeit der lokalen Certbot-Zertifikate prüft und rechtzeitig (Default: 30 Tage) vorher ein neues Zertifikat beantragt. Über die o.g. Hooks kann dieses dann auch gleich für Ihren Dienst aktiviert werden. Prüfen Sie, ob ein solcher Timer existiert; legen Sie, falls fehlend, ggf. einen Timer oder Cronjob an, und prüfen Sie, welche Hooks Sie benötigen.
Wir empfehlen, dass Sie die Restlaufzeit des von Ihrem Dienst tatsächlich genutzten Zertifikats geeignet überwachen.