1. Vorbemerkung:
An der Hochschule Anhalt werden Server Zertifikate automatisiert über einen zentralen ACME-Server (isc-acme-02) bereitgestellt. Dieser Server übernimmt dabei die Kommunikation mit HARICA und kümmert sich um die automatisierte Erneuerung der Server Zertifikate.
Der Server bietet die stetig erneuerten Zertifikate in einem NFS-Share zum Download zur Verfügung. Der NFS-Share ist dabei so abgesichert, dass nur die betreffenden Server selbst berechtigt sind, diesen Share zu mounten. Zudem wird auch nur das zum jeweiligen Server System zugeordnete Zertifikate zum Download angeboten.
2. SANs:
Der unter 1. beschriebene Mechanismus bezieht sich darauf ausschließlich auf das zu erneuernde Server-Zertifikat und den Namen des Servers. Werden zusätzliche SANs benötigt, so ist das auch kein Problem und kann in der Automatisierung mit berücksichtig werden.
3. Beantragungsprozess:
Soll ein Server System sein Zertifikat über diese Automatisierung beziehen, erstellt der Administrator des Servers ein einfaches Support-Ticket bzw. schreibt eine E-Mail an support@hs-anhalt.de.
Diese E-mail bzw. das Ticket muss mindestens die folgenden Informationen beinhalten:
Das ISC richtet daraufhin die Automatisierung auf dem zentralen Server (isc-acme-02) ein und stellt das Zertifikat über den NFS-Share zur Verfügung.
4. Automatisierung auf einem Linux Web-Server:
NFS-Utilities sind installiert. Wenn nicht, wie folgt nachinstallieren:
Der Server Administrator erstellt auf seinem Server ein neues Script mit folgendem Inhalt. Hier am Beispiel des Servers selfservice.hs-anhalt.de
Weiterhin muss der Server Administrator sicherstellen, dass dieses Script mindestens einmal in der Woche automatisch ausgeführt wird. Der Cronjob könnte z.B. wie folgt aussehen:
0
7 * * 0 /home/selfservice/bin/acme 2>&1
Damit ist die Automatisierung am Linux-Webserver bereits eingerichtet.
Es muss natürlich danach in der Web-Server Konfiguration noch der Pfad zu diesem Zertifikat angepasst werden.
Die ssl.conf im Apache2 enthält in diesem somit die folgenden Parameter:
SSLCertificateFile /etc/certs/selfservice.hs-anhalt.de.pem
SSLCertificateKeyFile /etc/certs/selfservice.hs-anhalt.de.key
SSLCertificateChainFile /etc/certs/chain.pem
Danach ist der Neustart des Web-Server Dienstes (apache2) erforderlich.
Analog verhält es sich bei einem NGNX Web-Server.
5. Automatisierung auf dem Windows IIS-Server:
OpenSSL und der Client für NFS muss auf dem Server installiert sein.
Folgendes Powershell Script (am Beispiel des isc-acme-01,hs-anhalt.de) ist in den Variablen anzupassen und als regelmäßiger Task mindestens einmal pro Woche auszuführen.
#ACME Automatisierung für Windows IIS
#Author: Henning Zinner
#Datum: 27.02.2026
#Script: acme.ps1
# Variablen setzen
$mountPoint = "Z:" # Lokaler Laufwerksbuchstabe, den du für den Mount verwenden möchtest
$nfsShare = "\\acme\certs\isc-acme-01.hs-anhalt.de\" # Der NFS Share, den du mounten möchtest
$localDestination = "C:\Certs" # Lokaler Ordner, in den die Dateien kopiert werden sollen
$PEMFilePath = "C:\Certs\fullchain.pem" # Pfad zum PEM-Zertifikat
$PEMKeyFilePath = "C:\Certs\isc-acme-01.hs-anhalt.de.key" # Pfad zur privaten Schlüsseldatei
$Password = "*******" # Passwort für PFX-Datei, frei wählbar
$PFXFilePath = "C:\Certs\certificate.pfx" # Pfad zur PFX-Datei
$IISSiteName = "isc-acme-01" # Name der Website im IIS
$ipport = "0.0.0.0:443" # Die IP und der Port, an denen gebunden werden soll
$appId = "12345678-1234-1234-1234-1234567890AB" # Eine GUID, um die Bindung zu identifizieren
# Stelle sicher, dass der lokale Zielordner existiert
if (!(Test-Path -Path $localDestination)) {
New-Item -ItemType Directory -Path $localDestination
}
# Lösche alle Dateien im lokalen Zielordner
Write-Output "Lösche Dateien im lokalen Zielordner..."
Remove-Item -Path "$localDestination\*" -Force -Recurse
# NFS-Share mounten
Write-Output "Mounting NFS-Share..."
New-PSDrive -Name $mountPoint.TrimEnd(':') -PSProvider FileSystem -Root $nfsShare
# Prüfen, ob das Mounten erfolgreich war
if (Test-Path "$mountPoint\") {
Write-Output "NFS-Share erfolgreich gemountet."
# Dateien kopieren
Write-Output "Kopiere Dateien vom NFS-Share..."
Copy-Item -Path "$mountPoint\*" -Destination $localDestination -Recurse
# NFS-Share unmounten
Write-Output "Unmounting NFS-Share..."
Remove-PSDrive -Name $mountPoint.TrimEnd(':')
Write-Output "NFS-Share erfolgreich unmounted."
} else {
Write-Output "Fehler: Konnte den NFS-Share nicht mounten."
}
Write-Output "Kopieren beendet."
# OpenSSL-Befehl zum Umwandeln von PEM zu PFX (OpenSSL muss installiert sein und im PATH verfügbar sein)
openssl pkcs12 -export -out $PFXFilePath -inkey $PEMKeyFilePath -in $PEMFilePath -password pass:$Password
# Zertifikat in den lokalen Zertifikatsspeicher importieren
$certPassword = ConvertTo-SecureString -String $Password -Force -AsPlainText
$cert = Import-PfxCertificate -FilePath $PFXFilePath -CertStoreLocation Cert:\LocalMachine\My -Password $certPassword
# Prüfen, ob Zertifikat erfolgreich importiert wurde
if ($cert -eq $null) {
Write-Error "Fehler beim Importieren des Zertifikats."
exit 1
}
# SSL-Hash aus dem Zertifikat extrahieren
$sslHash = $cert.Thumbprint
# Löschen der existierenden SSL-Bindung
Start-Process -FilePath "netsh" -ArgumentList "http delete sslcert ipport=$ipport" -NoNewWindow -Wait
# Füge das neue Zertifikat zur Bindung hinzu
$netshCommand = "http add sslcert ipport=$ipport certhash=$sslHash appid={$appId}"
Start-Process -FilePath "netsh" -ArgumentList $netshCommand -NoNewWindow -Wait
Write-Host "SSL-Zertifikat wurde erfolgreich gebunden."
Den Neustart des IIS zu Schluß nicht vergessen.
6. Monitoring und Überwachung:
Der Server-Admin bleibt weiterhin selbst in der Verantwortung, diesen automatisierten Kopiervorgang selbst zu überwachen und das Zertifikat auf Aktualität zu prüfen!
HARICA oder auch der ACME-Server selber versenden keine Erinnerung über ablaufende Zertifikate an den Zertifikats-Owner. Das ist bei diesem Mechanismus nicht vorgesehen und auch Standard. Zertifikate, deren Erneuerung nicht automatisiert werden kann, sollten nicht per ACME ausgestellt werden, da es sonst keine automatische Erinnerung an das Verfallsdatum des Zertifikats gibt.