Automatisierung der SSL Zertifikatsverwaltung mittels ACME

Diese Anleitung erklärt, wie ein ACME-Zertifikat bezogen werden kann und in einem Webserver verwaltet wird, um SSL/TLS-Verschlüsselung automatisiert zu nutzen (z. B. mit certbot). ACME steht für Automated Certificate Management Environment und dient der automatisierten Ausstellung und Erneuerung von Zertifikaten.

Was ist ACME?

ACME ist ein Protokoll zur automatischen Ausstellung und Erneuerung von SSL/TLS-Zertifikaten. Es ermöglicht dem Server, Zertifikate selbstständig zu beantragen und zu erneuern, ohne manuelles Eingreifen.

Warum ACME nutzen?

Reduziert den Verwaltungsaufwand durch Automatisierung.

Besonders wichtig, da Serverzertifikate ab dem 15.03.2029 nur noch 47 Tage gültig sind — häufige Erneuerung sonst erforderlich.

 

Gültigkeit von Serverzertifikaten

15.03.2026   200 Tage

15.03.2027   100 Tage

15.03.2029   47 Tage

 

 

ACME Account beantragen

Für die ACME-CA an der Hochschule Harz wird dabei eine externe Account-Bindung (EAB) mit Key-ID und HMAC-Key verwendet, um den Account bei der CA zu authentifizieren

Es gibt zwei Arten von ACME-Accounts

 

Enterprise Account

Personal Account

 

Sicherheitshinweise

 

  • Private Schlüssel schützen → Niemals unverschlüsselt speichern oder weitergeben.
  • Backups der Schlüssel und Zertifikate erstellen.
  • Bei Verlust des HMAC-Keys → neuen E-Mail-Antrag an CA stellen.

Enterprise ACME-Accounts

Ein Account wird von einem Teammitglied der HS-Harz-CA erstellt und für spezifische Domains freigeschaltet. Aufgrund der Vorvalidierung der Domains und ihrer Zuordnung ist keine Challenge (Validierung des Servers) mehr notwendig.

Anfragen zur Einrichtung eines Accounts bzw. Freischaltung einer weiteren Subdomain bitte an ca@hs-harz.de senden.

Angaben:

  • gewünschte Domain (FQDN)

Ausgabe des Account an die Mailadresse mit 

  • Server URL / ACME-URL
  • einen Key Identifier (KID)
  • einen HMAC-Key

Personal ACME-Accounts

Die Erstellung eines Personal Accounts kann jeder Nutzer über sein Harica Dashboard selbst vornehmen.  Eine Domain-Validierung (Challenge) wird per ACME Challenge durchgeführt, z. B. HTTP-Challenge

Ausgabe des Account erfolgt mit folgenden Informationen

  • Server URL / ACME-URL
  • einen Key Identifier (KID)
  • einen HMAC-Key

Daten müssen vertraulich behandelt werden.

HTTP-Challenge:

Für die HTTP-01 Challenge muss der Server von außen, d. h. über das Internet, erreichbar sein. Dies liegt daran, dass Let's Encrypt eine HTTP-Anfrage an eine spezifische URL sendet, die von Ihrem Server bedient werden muss, um die Kontrolle über die Domain zu validieren.

 

 

 

Zertifikat beantragen per ACME Account mit certbot

Vorraussetzung

  • Apache oder Nginx ist installiert und das SSL Modul ist aktiviert
  • Subdomainname ist für den Rechner eingetragen
  • ACME-Account liegt vor

Installation Certbot

 

   apt install certbot

 

Zertifikat beantragen mit der Option: --standalone

 

   certbot certonly --standalone --non-interactive --agree-tos --email <mailadresse@hs-harz.de> --server <ACME-URL> --eab-kid <KID> 
   --eab-hmac-key <HMAC-Key> --domain <subDomain>

 

Nach erfolgreicher Ausstellung befinden sich die Zertifikate unter:   /etc/letsencrypt/live/ihrserver.hs-harz.de/

Füge die Links zu den Zertifikatsdateien in deine VirtualHost-Konfiguration ein 

  • Apache: /etc/apache2/sites-available/ihrserver.conf
     <VirtualHost *:443>
     ServerName example.com
     DocumentRoot /var/www/html

     SSLEngine on
     SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
     SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

     </VirtualHost>

 

     a2ensite ihrserver.conf

 

     systemctl reload apache

 

  • Nginx: /etc/nginx/sites-available/ihrserver
   server {
     listen 443 ssl;
     server_name ihrserver.hs-harz.de;

     ssl_certificate /etc/letsencrypt/live/ihrserver.hs-harz.de/fullchain.pem;
     ssl_certificate_key /etc/letsencrypt/live/ihrserver.hs-harz.de/privkey.pem;

     root /var/www/html;
   }

 

   systemctl reload nginx

 

 

Zertifikat beantragen mit der Option –apache

 

   certbot --apache --non-interactive --agree-tos --email <mailadresse@hs-harz.de> --server <ACME-URL> --eab-kid <KID> --eab-hmac-key <HMAC-Key> 
   --domain <subDomain>

 

Certbot erkennt automatische die bestehende Apache-Konfiguration /etc/apache2/sites-available/ihrserver.conf und passt diese an, um eine SSL-Verbindung zu aktivieren. Nach der Konfiguration wird typischerweise ein Apache-Neustart durchgeführt.

 

   systemctl restart apache2

 

Nach der Installation kümmert sich Certbot bie beiden Varianten um die automatisierte Erneuerung der Zertifikate, sodass Sie sicherstellen können, dass Ihre Website immer eine gültige SSL-Verbindung hat. 

 

Zertifikat beantragen per ACME-Account mit dem httpd_md Modul

Vorraussetzung

  • Apache ist installiert und das SSL Modul ist aktiviert
  • Subdomainname ist für den Rechner eingetragen
  • ACME-Account liegt vor

httpd_md Modul für den Apache aktivieren

 

    a2enmod md
    systemctl restart apache2

 

Tragen Sie die folgenden Definitionen am Anfang Ihrer `/etc/apache2/sites-available/ihrserver.conf` ein:

 

   MDomain  subdomain1.hs-harz.de subdomain2.hs-harz.de
   MDContactEmail mailadresse@hs-harz.de
   MDCertificateAuthority Serveradresse / ACME-URL
   MDCertificateAgreement accepted
   MDExternalAccountBinding Pfad zur Accountdatendatei z.B:: /etc/apache2/secret/harica-eab-file
   <VirtualHost *:443>
       ServerAdmin webmaster@localhost
       ServerName subdomain1.hs-harz.de
       DocumentRoot /

 

             ...

Die Direktive `MDomain` gruppiert die angegebenen Subdomains, hier sollten alle Domainnamen angegeben werden, die in den nachfolgenden VirtualHostDefinitionen definiert werden. Es wird ein Zertiifkat mit allen Servernamen ausgestellt. 

Erstellen Sie die Accountdatendatei mit folgender Syntax

 

   {"kid": "Key ID", "hmac": "HMAC Key"}

 

Apache muss zweimal neugestartet werden.

 

   systemctl restart apache2.

 

 

Certbot

Vorzeitiges Erneuern eines Zertifikats mit ACME-Account

Zertifikate können mit folgender Befehlszeile erneuert werden:

 

   certbot certonly --standalone --non-interactive --agree-tos --email mailadresse@hs-harz.de --server <ACME URL> -eab-kid <KEYID> -eab-hmac-key <KEY> -domain <Domain> -force-renewal

 

 

Mehrere Subdomains angeben

 

   -d domain1.com -d domain2.com -d domain3.com

 

 

Automatische Erneuerung

certbot legt automatisch einen Cronjob/Systemd Timer an, der das Zertifikat regelmäßig erneuert. Der Status kann mit folgendem Befehl geprüft werden

 

   certbot renew --dry-run

 

 

Certbot-Paarameter

Parameter in Kurzform:

  • standalone: Certbot startet eigenen HTTP-Server für Validierung, eignet sich wenn noch kein Webserver läuft oder Port 80 freigegeben werden kann
  • non-interactive: keine Rückfragen im Terminal
  • agree-tos: Zustimmung zu den Nutzungsbedingungen
  • server: ACME-Server der Hochschule (HARICA-Endpoint)
  • eab-kid / --eab-hmac-key: Bindung des Accounts
  • domain: Subdomainname des zu sichernden Servers

Fehlerbehebung

  • Domain nicht im Enterprise ACME Account hinterlegt: The following domains are not whitelisted: <fqdn>
  • Domain nicht im Enterprise verfügbar: Identifiers could not be parsed from ACME Server
  • Falsche Serveradresse ACME-URL verwendet: ra_object_id does not belong to this account