TLS Zertifikat mit LEGO: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
Cds09 (Diskussion | Beiträge) |
||
(Eine dazwischenliegende Version von einem anderen Benutzer wird nicht angezeigt) | |||
Zeile 25: | Zeile 25: | ||
--http run | --http run | ||
Bei der erfolgreichen Ausführung diese Befehls wurde ein verstecktes Verzeichnis ".lego" angelegt. | Bei der erfolgreichen Ausführung diese Befehls wurde ein verstecktes Verzeichnis ".lego" angelegt. In diesem Verzeichnis befinden sich die Daten zum neu angelegten Letsencrypt-Account und das Zertifikat mit dem zugehörigen private key. | ||
Die Daten des Zertifikates kann man wie folgt auslesen: | Die Daten des Zertifikates kann man wie folgt auslesen: | ||
Zeile 43: | Zeile 43: | ||
--http renew | --http renew | ||
Die Ausführung des Skriptes wird über einen | Die Ausführung des Skriptes wird über einen systemd timer gesteuert: | ||
''~/.config/systemd/user/lego_certificate.service'' | |||
[Unit] | |||
Description=renew lego certificate | |||
[Service] | |||
Type=oneshot | |||
ExecStart=php8.2 /home/pacs/xyz00/users/mumble/bin/lego-renew | |||
''~/.config/systemd/user/lego_certificate.timer'' | |||
[Unit] | |||
Description=timer for lego certificate | |||
[Timer] | |||
OnCalendar=Thu 4:34 | |||
Persistent=True | |||
[Install] | |||
WantedBy=timers.target | |||
Den Timer aktivieren und starten: | |||
$ systemctl --user enable lego_certificate.timer | |||
$ systemctl --user start lego_certificate.timer |
Aktuelle Version vom 3. Dezember 2024, 12:38 Uhr
TLS Zertifikat mit LEGO
Für den zentralen Apache Webserver werden bei Hostsharing automatisch TLS Zertifikate über den Dienst "Lets Encrypt" erzeugt und verlängert. Das wird über die Domain-Option "letsencrypt" gesteuert.
Teilweise will man aber eigene Serverdienste betreiben, die nicht über HTTP hinter dem Apache-Proxy erreichbar sind. Beispiele dafür sind ein eigener XMPP Server oder ein Mumble Server. Für diese Server können die Nutzer:innen der Hostsharing Plattform sehr leicht TLS Zertifikate erzeugen, indem sie den zentral installierten LEGO-Bot nutzen.
Einrichtung
Zunächst muss eine Domain vorhanden sein, auf die das Zertifikat ausgestellt werden soll und die im Webspace über HTTP erreichbar ist.
Ich nutze hier den Service-User "xyz00-mumble" als Beispiel. Bei diesem User sei die Domain "mumble.hs-example.de" aufgeschaltet.
Dann lösche ich bei der Domain die HTTP-Weiterleitungen und die www-Subdomain:
rm -rf ~/doms/mumble.hs-example.de/subs/www \ ~/doms/mumble.hs-example.de/subs-ssl/www \ ~/doms/mumble.hs-example.de/htdocs/.htaccess \ ~/doms/mumble.hs-example.de/htdocs-ssl/.htaccess
Das erste Zertifikat wird mit dem folgenden Befehl erzeugt:
/usr/bin/lego -d mumble.hs-example.de -a \ --email webmaster@mumble.hs-example.de -k ec256 \ --http.webroot $HOME/doms/mumble.hs-example.de/htdocs \ --http run
Bei der erfolgreichen Ausführung diese Befehls wurde ein verstecktes Verzeichnis ".lego" angelegt. In diesem Verzeichnis befinden sich die Daten zum neu angelegten Letsencrypt-Account und das Zertifikat mit dem zugehörigen private key.
Die Daten des Zertifikates kann man wie folgt auslesen:
openssl x509 -in .lego/certificates/mumble.hs-example.de.crt -noout -text
regelmäßige Verlängerung
Für die automatische Verlängerung des Zertifikats können wir einen Cronjob aufsetzen, der zum Beispiel täglich oder wöchentlich läuft:
$ cat bin/lego-renew #!/bin/bash HOME=/home/pacs/xyz00/users/mumble /usr/bin/lego -d mumble.hs-example.de -a \ --email webmaster@mumble.hs-example.de -k ec256 \ --http.webroot $HOME/doms/mumble.hs-example.de/htdocs \ --http renew
Die Ausführung des Skriptes wird über einen systemd timer gesteuert:
~/.config/systemd/user/lego_certificate.service
[Unit] Description=renew lego certificate [Service] Type=oneshot ExecStart=php8.2 /home/pacs/xyz00/users/mumble/bin/lego-renew
~/.config/systemd/user/lego_certificate.timer
[Unit] Description=timer for lego certificate [Timer] OnCalendar=Thu 4:34 Persistent=True [Install] WantedBy=timers.target
Den Timer aktivieren und starten:
$ systemctl --user enable lego_certificate.timer $ systemctl --user start lego_certificate.timer