Lets Encrypte Zertifikate erneuern mit Apache Reverse Proxy

Aus Znilwiki
Wechseln zu: Navigation, Suche

Ich nutze - weil ich faul bin - ISPConfig in der Version 3.1 um neue Domänen und Subdomänen zu erstellen.
Das schöne ist das ISPConfig ab dieser Version das Holen der SSL-Zertifikate von Let's Encrypt direkt mit einbaut hat - man muss nur den Haken in der Konfiguration der Webseite setzen.

Tja, leider mache ich wohl wieder viel anderes als andere - insbesondere nutze ich intensiv die Funktion des Apache Reverse Proxy.
Praktisch jedes Gerät hat heute eine Weboberfläche für die Konfiguration.
Und ich habe für jedes Gerät was ich auch aus der Ferne im Zugriff haben will eine Subdomain erstellt. Diese hat eine Reverse Proxy Konfiguration und leitet den Datenverkehr - teilweise durch VPN Tunnel - zum eigentlichen Gerät weiter.

Bei der Erstellung einer Subdomain file mir auf das ISPConfig es nicht hinbekommt für diese ein Zertifikat auszustellen wenn der Proxy-Teil schon aktiv ist.
Es wird nämlich versucht über

subdomain.domain.ltd/.well-known/acme-challenge

auf einen Schlüssel zu zugreifen. Bei normalen Webseiten kein Problem, bei Reverse Proxy Seiten kommt dann aber eine Fehlermeldung weil mein AccessPoint damit nichts anfangen kann - und ISPConfig nichts davon weis.


Die Lösung ist einfach: zu irgendeiner nachtschlafenden Zeit wird der Apache2 angehalten, die Zertifikate über den im certbot-auto eingebauten Webserver erneuert und der Apache wieder gestartet.

Test (Ubuntu 16.04.x):

/opt/certbot/certbot-auto renew --standalone --no-self-upgrade --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service" --dry-run

führt das ganze aus - dank --dry-run nur als Test.

Er findet alle vorhandenen Zertifikate und testet deren Erneuerung.
Mit den Parametern

--pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"

stoppt und startet er den Webserver hierbei bei Bedarf(!). Er schaut also erst ob es etwas zu verlängern gibt - und falls dem so ist, dann stoppt er den Webserver dafür.

Damit kann die ganze Zeile also so in einen Cronjob:

30 5 * * * /opt/certbot/certbot-auto renew --standalone --no-self-upgrade --pre-hook "systemctl stop apache2.service" --post-hook "systemctl start apache2.service"

führt das ganze jeden Morgen um 05:30 Uhr einmal durch. Das Ergebnis bekommt der root als Email.
Wer nur eine Mail bei Fehlern haben möchte ergänzt den Aufruf um ein

-q

am Ende, das Unterdrückt alle sonstigen Meldungen.

Important.png
Hinweis: Den Start und Stop Befehl für den Webserver müsst Ihr ggf. Anpassen, unter Ubuntu 14.04.x wäre es zum Beispiel service apache2 stop und service apache2 start




Kommentare

Kommentare


Kommentar hinzufügen:
Gebe hier einen Kommentar ein. Du kannst einen beliebigen Namen oder eine Email-Adresse als Namen angeben.

Wenn du dich einloggst wird automatisch dein Benutzername genommen.
Du kannst KEINE Links hier posten - das wurde wegen anhaltender Werbung deaktiviert. Sobald ein '''http://''' im Text vorkommt wird der Kommentar verworfen Alle anderen Steuerzeichen oder Funktionen wie < br > werden ausgefiltert - zum Posten von Quelltexten ist diese Funktion hier nicht geeignet.

Falls du dringendere Fragen hast kannst du auch das Support-System von znil.net nutzen unter support.znil.net