Serverzertifikate sind jetzt nur noch 100 Tage gültig. Die Gültigkeitsdauer wird sich weiter verkürzen. Es lohnt sich also, die Erneuerung der Zertifikate automatisch ablaufen zu lassen.
Harica unterstützt die automatische Zertifikatsausstellung mit einer ACME-Schnittstelle.
Voraussetzung dafür ist, dass der Administrator über einen ACME-Account bei Harica verfügt. Dieser kann im ITM erstellt werden ()
Certbot
Konfiguration
Die Konfiguration erfolgt in einer Datei (standardmäßig /etc/letsencrypt/cli.ini), in welche wichtige Paramter festgelegt werden können, die dann nicht mehr an der Kommandozeile angegeben werden müssen. Auf diese Konfiguration kann verzichtet werden, wenn die entsprechenden Werte jedes mal beim Ausstellen eines Zertifikates in der Kommandozeile angegeben werden.
Ein Beispiel:
# Use ECC for the private key key-type = ecdsa elliptic-curve = secp384r1 # Use a 4096 bit RSA key instead of 2048 rsa-key-size = 4096 # wich authenticator to use? apache / nginx / webroot / standalone authenticator = standalone # agree to Terms of Service of the Harica-ACME-Server agree-tos = true # contact-Data of administrator email = admin.name@h2.de # ACME-Server server = https://acme-v02.harica.gr/acme/id-of-the-service/directory eab-kid = keyidofadminwithoutquotes eab-hmac-key = hmac-keyofadminwithoutquotes
Wird ein anderer authenticator als standalone gewählt, dann kann für den entsprechenden Webserver die Zertifikatsausstellung und verarbeitung (Eintragen in Webserverkonfiguration) automatisiert werden. Voraussetzung dafür ist, dass das Webserverkonfigurationsverzeichnis für den Aufrufer von certbot beschreibbar ist. Die erforderlichen Daten für den ACME Server werden mit dem entsprechenden Account bereitgestellt.
Erstes Ausstellen eines Serverzertifikates
So vorbereitet kann das erste Serverzertifikat mit einer der beiden Befehle erzeugt werden:
~# certbot run -d domains ~# certbot certonly -d domains [--pre-hook script --post-hook script --csr csr.pem]
- run - erzeugt die Zertifikats-Dateien und installiert sie im angegebenen Webserver (apache oder nginx) wenn diese in der Konfiguration angegeben wurden.
- certonly - erzeugt die Zertifikats-Dateien ohne weitere Verarbeitung.
- domains ist der Servername oder eine Komma-separierte Liste von Servernamen, für den das Zertifikat ausgestellt wird. Der erste Name in der Liste ist der Zertifikatsname, wenn nicht mit der Option --cert-name Zertifikatsname ein anderer Name angegeben wird.
- mit --pre-hook kann ein Script angegeben werden, welches vor dem Erzeugen neuer Zertifikate ausgeführt wird.
- mit --post-hook kann ein Script angegeben werden, welches nach dem Erhalt neuer Zertifikate ausgeführt wird.
- mit --csr kann eine Zertifikats-Request-Datei angegeben werden. Damit bleibt der private Schlüssel zu jedem Zeitpunkt auf dem eigenen Server.
Die Zertifikate werden standardmäßig unter /etc/letsencrypt/live/Zertifikatsname verlinkt und stehen dort zur weiteren Verarbeitung/Verteilung zur Verfügung.
Automatische Neuausstellung ablaufender Zertifikate
Zum Erneuern von certbot verwalteter Zertifikate dient der Befehl
~# certbot renew [--pre-hook script --post-hook script --deploy-hook script --reuse-key]
Dieser Befehl prüft, für welche Zertifikate 2/3 der Nutzungsdauer abgelaufen sind (bzw. welche in den nächsten 30 Tagen ablaufen bei älteren certbot-Versionen) und erneuert für diese die Zertifikate. Werden keine Zertifikate erneuert, tut der Befehl nichts weiter. Er kann also regelmäßig (täglich oder wöchentlich) per cron aufgerufen werden.
- --reuse-key gibt an, dass beim Erneuern der aktuelle private Schlüssel gültig bleibt
- mit --deploy-hook kann ein Script angegeben werden, welches für jedes erfolgreich erneuerte Zertifikat ausgeführt wird. Damit ist eine automatische Weiterverarbeitung und Verteilung von Zertifikaten für andere als die direkt unterstützten Webserver möglich. Dem Script werden die Umgebungsvariablen $RENEWED_LINEAGE (Pfad, in dem das erneuerte Zertifikat bereitgestellt wird, standardmäßig /etc/letsencrypt/live/servername.h2.de) und $RENEWED_DOMAINS (komma-separierte Liste der Domains des erneuerten Zertifikates) mitgegeben.
- mit --pre-hook bzw. --post-hook können jeweils Scripte angegeben werden, die vor bzw nach der Erneuerung der Zertifikate ausgeführt werden (typischerweise Webserver stoppen / starten oder Konfiguration neu einlesen).
Scripte, die in der Unterverzeichnissen pre, post oder deploy von /etc/letsencrypt/renewal-hooks/ abgelegt werden, werden automatisch in den entsprechenden Hooks in alphabetischer Reihenfolge ausgeführt ohne extra in der Kommandozeile angegeben zu werden.
Viele weitere nützliche Parameter sind in der Dokumentation zu certbot beschrieben: man certbot oder https://eff-certbot.readthedocs.io/en/stable/