TLS Zertifikat mit LEGO: Unterschied zwischen den Versionen
K (→Einrichtung) |
K (→Einrichtung) |
||
Zeile 29: | Zeile 29: | ||
Die Daten des Zertifikates kann man wie folgt auslesen: | Die Daten des Zertifikates kann man wie folgt auslesen: | ||
<syntaxhighlight lang=shell line> | |||
openssl x509 -in .lego/certificates/mumble.hs-example.de.crt -noout -text | |||
</syntaxhighlight> | |||
== regelmäßige Verlängerung == | == regelmäßige Verlängerung == |
Version vom 9. Dezember 2024, 14:27 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