TLS Zertifikat mit LEGO

Aus Hostsharing Wiki
Version vom 19. Juli 2021, 12:19 Uhr von Hsh-peterhormanns (Diskussion | Beiträge) (erste Version)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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 betrieben, 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 ww-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 Cronjob gesteuert:

 $ crontab -l
 # m h  dom mon dow   command
 HOME=/home/pacs/xyz00/users/mumble
 MAILTO=webmaster@mumble.hs-example.de
 
 # Renew mumble cert
 34 4 * * 2 $HOME/bin/lego-renew