Letsencrypt Zertifikate kopieren bei renew
Letsencrypt Zertifikate kopieren bei renew
Hallo ich suche Unterstützung für folgendes Problem oder vielleicht einfach nur Ideen falls es andere Vorschläge gibt.
Ich habe ein Debian 11 Host auf dem Keyhelp läuft, womit ich die meine Domains verwalte und u.a. dann auch die entsprechenden Let's encrypt Zertifikate erstellt werden. Der auf dem Host installierte Apache dient auch als Reverse Proxy und im Hintergrund werkeln einige Docker Container.
Momentan ist es so das die Anfragen per SSL rein kommen und dann oftmals via ProxyPass / http://127.0.0.1:XXXX/ an den Container weitergeleitet werden. Nun möchte ich SSL aber nicht am Proxy terminieren lassen sondern das direkt per SSL an den Container weiterleiten.
Das klappt prinzipiell auch, allerdings suche ich nach einer Lösung wie man das mit den vorhandenen Letsencrypt Zertifikaten bewerkstelligen kann.
Prinzipiell ist es so das ich im Docker Container lokale Pfade mappe in denen dann die entsprechenden Zertifikate liegen. Das ist allerdings auch zugleich das Problem, ich kann nicht den Originalpfad verwenden in denen Keyhelp die Dateien abgelegt (/etc/ssl/keyhelp/letsencrypt/<user>/<domain> denn dann müsste ich den Container als root oder entsprechder <user> laufen lassen damit der Zugriff funktioniert.
Temporär habe ich nun also die Zertifikate aus /etc/ssl/keyhelp/letsencrypt/<user>/<domain> ins entsprechenden Dockerverzeichnis kopiert auf dem dieser Container ohnehin Zugriff hat. Das klappt auch soweit, allerdings nur solange bis die Zertifikate erneuert werden. Und genau dafür suche ich nun nach einer praktikablen Lösung, d.h. ein Script welches die Zertifikate kopiert sobald sie erneuert wurden und ggf. dann auch gleich den Docker Container neu startet. Vielleicht gibt es ja jemanden hier der auch schon vor diesem Problem stand oder ggf. andere Ideen hat wie man es sonst noch lösen könnte.
Gruß
Peter
Ich habe ein Debian 11 Host auf dem Keyhelp läuft, womit ich die meine Domains verwalte und u.a. dann auch die entsprechenden Let's encrypt Zertifikate erstellt werden. Der auf dem Host installierte Apache dient auch als Reverse Proxy und im Hintergrund werkeln einige Docker Container.
Momentan ist es so das die Anfragen per SSL rein kommen und dann oftmals via ProxyPass / http://127.0.0.1:XXXX/ an den Container weitergeleitet werden. Nun möchte ich SSL aber nicht am Proxy terminieren lassen sondern das direkt per SSL an den Container weiterleiten.
Das klappt prinzipiell auch, allerdings suche ich nach einer Lösung wie man das mit den vorhandenen Letsencrypt Zertifikaten bewerkstelligen kann.
Prinzipiell ist es so das ich im Docker Container lokale Pfade mappe in denen dann die entsprechenden Zertifikate liegen. Das ist allerdings auch zugleich das Problem, ich kann nicht den Originalpfad verwenden in denen Keyhelp die Dateien abgelegt (/etc/ssl/keyhelp/letsencrypt/<user>/<domain> denn dann müsste ich den Container als root oder entsprechder <user> laufen lassen damit der Zugriff funktioniert.
Temporär habe ich nun also die Zertifikate aus /etc/ssl/keyhelp/letsencrypt/<user>/<domain> ins entsprechenden Dockerverzeichnis kopiert auf dem dieser Container ohnehin Zugriff hat. Das klappt auch soweit, allerdings nur solange bis die Zertifikate erneuert werden. Und genau dafür suche ich nun nach einer praktikablen Lösung, d.h. ein Script welches die Zertifikate kopiert sobald sie erneuert wurden und ggf. dann auch gleich den Docker Container neu startet. Vielleicht gibt es ja jemanden hier der auch schon vor diesem Problem stand oder ggf. andere Ideen hat wie man es sonst noch lösen könnte.
Gruß
Peter
- Jolinar
- Community Moderator
- Posts: 3596
- Joined: Sat 30. Jan 2016, 07:11
- Location: Weimar (Thüringen)
- Contact:
Re: Letsencrypt Zertifikate kopieren bei renew
Einfach ein kleines Shellscript erstellen, welches zB. mit diff das originale mit dem kopierten Zertifikat vergleicht und bei Ungleichheit das neue originale Zertifikat kopiert.
Das ganze als Cronjob einrichten und minütlich starten.
Das ganze als Cronjob einrichten und minütlich starten.
Wenn jemand inkompetent ist, dann kann er nicht wissen, daß er inkompetent ist. (David Dunning)
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
- In dieser Farbe schreibe ich als Moderator und gebe moderative Hinweise oder begründe moderative Eingriffe /
In this color, I write as a moderator and provide moderative guidance or justify moderative interventions - In dieser Farbe schreibe ich als Community Mitglied und teile meine private Meinung und persönlichen Ansichten mit /
In this color, I write as a community member and share my personal opinions and views
Re: Letsencrypt Zertifikate kopieren bei renew
Minutlich ist der absolute Overkill.
Die Zertifikate werden, nach Standardeinstellung, nachts zwischen 0 und 1 Uhr erneuert.
Es würde also reichen einmal täglich um 5 nach 1 die timestamps der Zertifikate zu checken und ggf. umzukopieren + Neustart Docker.
Ein solches Script habe ich leider nicht, es können aber kaum mehr als 20 Zeilen Code sein
Die Zertifikate werden, nach Standardeinstellung, nachts zwischen 0 und 1 Uhr erneuert.
Es würde also reichen einmal täglich um 5 nach 1 die timestamps der Zertifikate zu checken und ggf. umzukopieren + Neustart Docker.
Ein solches Script habe ich leider nicht, es können aber kaum mehr als 20 Zeilen Code sein
Gruß,
Tobi
-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
Tobi
-----------------------------
wewoco.de
Das Forum für Reseller, Digital-Agenturen, Bildschirmarbeiter und Mäuseschubser
- Jolinar
- Community Moderator
- Posts: 3596
- Joined: Sat 30. Jan 2016, 07:11
- Location: Weimar (Thüringen)
- Contact:
Re: Letsencrypt Zertifikate kopieren bei renew
Ich wollte damit auch nur den Fall sicherstellen, daß jemand an den Einstellungen für die Zertifikatserneuerung rumstellt.
BTW:
Der reine Vergleich der Zertifikate kratzt nicht mal an der verfügbaren Prozessorleistung heutiger Systeme, geschweige denn, daß er tatsächlich Last erzeugt.
Aber du hast natürlich recht, wenn man solche Basstellösungen einsetzt, soll man sie natürlich an die individuellen Gegebenheiten anpassen.
Wenn jemand inkompetent ist, dann kann er nicht wissen, daß er inkompetent ist. (David Dunning)
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
- In dieser Farbe schreibe ich als Moderator und gebe moderative Hinweise oder begründe moderative Eingriffe /
In this color, I write as a moderator and provide moderative guidance or justify moderative interventions - In dieser Farbe schreibe ich als Community Mitglied und teile meine private Meinung und persönlichen Ansichten mit /
In this color, I write as a community member and share my personal opinions and views
Re: Letsencrypt Zertifikate kopieren bei renew
Er kann etwaiges Script ja auch einfach nur alle 2 Minuten laufen lassen und statt diff nur aufs Änderungsdatum der Datei schauen. Dann sollte er nochmal ein paar Mikrosekunden sparen
Mit freundlichen Grüßen / Best regards
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
Alexander Mahr
**************************************************************
Keyweb AG - Die Hosting Marke
Neuwerkstr. 45/46, 99084 Erfurt / Germany
http://www.keyweb.de - http://www.keyhelp.de
**************************************************************
- Jolinar
- Community Moderator
- Posts: 3596
- Joined: Sat 30. Jan 2016, 07:11
- Location: Weimar (Thüringen)
- Contact:
Re: Letsencrypt Zertifikate kopieren bei renew
Natürlich kann man die Optimierung noch weiter treiben.
Ich hab es damals so gelernt: Vergleiche Dateien immer nach Inhalt, niemals nur nach Dateiattributen.
Wenn jemand inkompetent ist, dann kann er nicht wissen, daß er inkompetent ist. (David Dunning)
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
- In dieser Farbe schreibe ich als Moderator und gebe moderative Hinweise oder begründe moderative Eingriffe /
In this color, I write as a moderator and provide moderative guidance or justify moderative interventions - In dieser Farbe schreibe ich als Community Mitglied und teile meine private Meinung und persönlichen Ansichten mit /
In this color, I write as a community member and share my personal opinions and views
Re: Letsencrypt Zertifikate kopieren bei renew
Ich hätte folgendes Beispiel, das würde als Script dann kurz nach dem Keyhelp "Wartung von SSL/TLS-Zertifikaten" Job laufen und überprüft ob sich im angegebenen Verzeichnis Dateien in den letzten 15min geändert haben.
Passt die Logik so oder könnte man da noch was vereinfachen / verbessern?
Code: Select all
#!/bin/bash
result=$(find /etc/ssl/keyhelp/letsencrypt/user/domain.de/ -type f -mmin -15)
if [ -n "$result" ]; then
cp /etc/ssl/keyhelp/letsencrypt/user/domain.de/private.pem /mnt/docker/<container>/certs/private.pem
cp /etc/ssl/keyhelp/letsencrypt/user/domain.de/fullchain.pem /mnt/docker/<container>/certs/fullchain.pem
/usr/bin/docker restart <container>
fi
exit 0
- Jolinar
- Community Moderator
- Posts: 3596
- Joined: Sat 30. Jan 2016, 07:11
- Location: Weimar (Thüringen)
- Contact:
Re: Letsencrypt Zertifikate kopieren bei renew
Sieht gut aus...und macht genau das, was du willst.
Edit:
Wenn du das flexibler gestalten willst (zB. verschiedene Domains und zugehörige Container), könntest du noch ein Parameterfile mit Zertifikatspfad und Namen des Containers, der restartet werden soll, anlegen. Das File dann über das Script einlesen und in einer Schleife die einzelnen Prüfungen und Restarts unterbringen. So brauchst du dann nicht jedesmal das Script anpassen, du mußt nur noch das Parameterfile verwalten.
Wenn jemand inkompetent ist, dann kann er nicht wissen, daß er inkompetent ist. (David Dunning)
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
- In dieser Farbe schreibe ich als Moderator und gebe moderative Hinweise oder begründe moderative Eingriffe /
In this color, I write as a moderator and provide moderative guidance or justify moderative interventions - In dieser Farbe schreibe ich als Community Mitglied und teile meine private Meinung und persönlichen Ansichten mit /
In this color, I write as a community member and share my personal opinions and views
Re: Letsencrypt Zertifikate kopieren bei renew
Technisch schaut das gut aus.
Wenn Du mehr als eine Domain/Container hast, würde ich es so erweitern:
Code: Select all
#!/bin/bash
if [ $# != 2 ];
then
echo "Usage: $0 <domain> <container>"
exit 1;
fi
domain=$1
container=$2
result=$(find /etc/ssl/keyhelp/letsencrypt/user/$domain/ -type f -mmin -15)
if [ -n "$result" ]; then
cp /etc/ssl/keyhelp/letsencrypt/user/$domain/private.pem /mnt/docker/$container/certs/private.pem
cp /etc/ssl/keyhelp/letsencrypt/user/$domain/fullchain.pem /mnt/docker/$container/certs/fullchain.pem
/usr/bin/docker restart $container
fi
exit 0
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
Re: Letsencrypt Zertifikate kopieren bei renew
Danke, ich denke in einem Script würde reichen. Es sind unterschiedliche Domains aber auch unterschiedliche Benutzer, es müsste also auch $user noch verwendet werden.24unix wrote: ↑Wed 27. Apr 2022, 10:44Technisch schaut das gut aus.
Wenn Du mehr als eine Domain/Container hast, würde ich es so erweitern:Edit: OK der Ansatz von Jolinar ist auch nicht schlecht, musst Du gucken, was für Dich einfacher umzusetzen ist, mehre Aufrufe, oder eine Config parsen und drüber laufen.Code: Select all
#!/bin/bash if [ $# != 2 ]; then echo "Usage: $0 <domain> <container>" exit 1; fi domain=$1 container=$2 result=$(find /etc/ssl/keyhelp/letsencrypt/user/$domain/ -type f -mmin -15) if [ -n "$result" ]; then cp /etc/ssl/keyhelp/letsencrypt/user/$domain/private.pem /mnt/docker/$container/certs/private.pem cp /etc/ssl/keyhelp/letsencrypt/user/$domain/fullchain.pem /mnt/docker/$container/certs/fullchain.pem /usr/bin/docker restart $container fi exit 0
Re: Letsencrypt Zertifikate kopieren bei renew
Dann so:
Code: Select all
#!/bin/bash
if [ $# != 3 ];
then
echo "Usage: $0 <user> <domain> <container>"
exit 1;
fi
user=$1
domain=$2
container=$3
result=$(find /etc/ssl/keyhelp/letsencrypt/$user/$domain/ -type f -mmin -15)
if [ -n "$result" ]; then
cp /etc/ssl/keyhelp/letsencrypt/$user/$domain/private.pem /mnt/docker/$container/certs/private.pem
cp /etc/ssl/keyhelp/letsencrypt/$user/$domain/fullchain.pem /mnt/docker/$container/certs/fullchain.pem
/usr/bin/docker restart $container
fi
exit 0
mfg Micha
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
--
If Bill Gates had a nickel for every time Windows crashed …
… oh wait, he does.
- Jolinar
- Community Moderator
- Posts: 3596
- Joined: Sat 30. Jan 2016, 07:11
- Location: Weimar (Thüringen)
- Contact:
Re: Letsencrypt Zertifikate kopieren bei renew
Ach herrlich...so macht Forenaktivität echt Spaß
Oft erwarten die Leute ja, daß man ihnen eine Lösung für ihr Problem schön vorgekaut auf einem Silbertablett serviert. Hier läuft das anders, ihr zeigt Eigeninitiative, bringt gute Vorschläge ein und arbeitet gemeinsam an der Lösung.
Einfach eine geile Community!
Sorry, das mußte ich mal loswerden.
Oft erwarten die Leute ja, daß man ihnen eine Lösung für ihr Problem schön vorgekaut auf einem Silbertablett serviert. Hier läuft das anders, ihr zeigt Eigeninitiative, bringt gute Vorschläge ein und arbeitet gemeinsam an der Lösung.
Einfach eine geile Community!
Sorry, das mußte ich mal loswerden.
Wenn jemand inkompetent ist, dann kann er nicht wissen, daß er inkompetent ist. (David Dunning)
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
Data Collector für Community Support
___
Ich verwende zwei verschiedene Schriftfarben in meinen Beiträgen /
I use two different font colors in my posts:
- In dieser Farbe schreibe ich als Moderator und gebe moderative Hinweise oder begründe moderative Eingriffe /
In this color, I write as a moderator and provide moderative guidance or justify moderative interventions - In dieser Farbe schreibe ich als Community Mitglied und teile meine private Meinung und persönlichen Ansichten mit /
In this color, I write as a community member and share my personal opinions and views