Hallo bawue.net-ler,
dank Andreas unermüdlichem Einsatz habe ich es geschafft, für meinen zuhause laufenden Server im abgeschotteten Netz ein offizielles Let's Encrypt Zertifikat zu erhalten. Und das ganze ohne riesigen Aufwand. Genial ist, dass es dann auch automatisch wieder erneuert wird vom Server - ohne manuellen Eingriff!
Der große Vorteil ist nun, dass meine Nextcloud und der Zugriff der ganzen mobilen Apps darauf nun keine komplizierten Klimmzüge mehr erfordert oder überhaupt erst funktioniert. Die selbst erstellten Zertifikate für die sichere SSL Verbindung waren immer lästig oder wurden durch Mechanismen im Android OS komplett ausgeschlossen.
Was habe ich gemacht:
- Anlage eines DynDNS Hosts im bawue.net z.B. unter der dyn.bawue.de Domain (geht nur über Antrag an admin@bawue.net)
- Anlage eines CNAME unter der eigenen Domain (z.B. meinsuperserver.eigene.dom) der auf den o.g. DynDNS Host zeigt - das geht seit neuem selbst im my.bawue.de! Domain-Admin
- Konfiguration des eigenen Servers zuhause, dass er regelmäßig prüft ob die IP des eigenen Internetzugangs noch korrekt zum DynDNS Host passt und wenn nicht, diese erneuert.
- Installation von Dehydrated in meinem Debian Linux OS - das ist ein Bash Skript zur automatischen Pflege der Let's Encrypt Zertifikate - geht glaube ich auch sonst überall. Update des eigentlichen Scripts von der github Seite: Dehydrated
- Konfiguration desselben passend für den bawue.net Dienst:
- Holen des passenden bawue.net Domain Control Scripts von github: domainctl von Andreas für bawue.net entwickelt, zur automatischen Änderung von DNS Einträgen an eigenen Domains.
- Erstellen eines Hook Scripts von Dehydrated, dass das obige domainctl Skript mit passenden Parametern und vor allem user und passwort für den bawue.net Zugang aufruft:
Beispiel zum ausfüllen liegt hier: dehydrated-eigene-domain-hook.sh - Download und ablegen des kleinen Helfers (bin nicht fit in bash, daher python): domainsplit.py
- Erstellen eines Eintrags in /etc/dehydrated/conf.d/10-meinsuperserver-eigene-domain.sh mit folgenden Inhalt/:
DEHYDRATED_USER=www-data # benutzer unter dem dehydrated laufen soll - evtl. mit Schreibzugriff auf den Ort des apache Cert Verzeichnisses
DEHYDRATED_GROUP=www-data # gruppe für selbiges
IP_VERSION=4
HOOK=/etc/dehydrated/dehydrated-eigene-domain-hook.sh
CHALLENGETYPE="dns-01"
CONTACT_EMAIL=mail@eigene.dom
RENEW_DAYS="20" # kann auch mehr sein, die Zeit vor Ablauf des Zertifikats, wenn ein neues erstellt wird.
# OWN - comment out when ready - needed for testing!!!
CA="https://acme-staging-v02.api.letsencrypt.org/directory" - Eintrag des hosts in /etc/dehydrated/domains.txt: meinsuperserver.eigene.dom
- Die erzeugten Zertifikate werden standardmäßig unter /var/lib/dehydrated/certs/meinsuperserver.eigene.dom abgelegt.
- Wenn das alles erledigt ist, dann eine Probelauf von dehydrated machen: dehydrated --cron
- Dabei sollten keine Fehler auftreten - Achtung, das kann 10-15 min dauern! Danach geht zwar das Cert noch nicht, weil es ja nur ein Testlauf war. Aber so wird man nicht ausgesperrt, wenn man noch Fehler drin hat und es nicht geht.
- Nun die letzte Zeile aus Unterpunkt 4 (CA=...) auskommentieren und nochmal den Befehl ausführen: dehydrated --cron
- Wenn das dann auch fehlerfrei durchläuft, dann kann man die nun erstellten Zertifikate dem Apache oder wem auch sonst, der auf dem Server läuft zur Verfügung stellen. Ich habe dazu einfach einen link aus dem Config-Dir von Apache bzw. bei Debian aus /etc/ssl/localcerts/ nach /var/lib/dehydrated/certs/meinsuperserver.eigene.dom/fullchain.pem und .../privkey.pem erstellt.
- Apache restart und Ta-Ta - ein echtes Zertifikat