Metainformationen zur Seite
Kostenloses SSL-Zertifikat
Wir empfehlen Deinen Downloadserver über das HTTPS Protokoll verfügbar zu machen. Ein entsprechendes Zertifikat kannst Du kostenlos von https://letsencrypt.org/ erhalten. Um den Prozess der Zertifikatserstellung zu automatisieren, verwenden wir die Software https://github.com/srvrco/getssl. getssl kann z. B. auch auf Deinem LoxBerry installiert werden, wenn Du keinen Server mit Root-Access zur Verfügung hast.
Getssl einrichten
Getssl ist ein reines Bash-Skript und läuft auf so ziemlich jedem Unixartigen Betriebssystem. Wenn Du es auf dem LoxBerry installieren möchtest, empfiehlt sich ein eigenes Unterverzeichnis in /opt/loxberry/webfrontend/legacy
, also z.B. /opt/loxberry/webfrontend/legacy/getssl
. Dieses Verzeichnis ist für eigene Skripte auf dem LoxBerry gedacht und wird auch nicht bei Updates überschrieben oder gelöscht.
Anschließend richtest Du für Deine Domain mit folgendem Befehl eine Grundkonfiguration ein:
getssl -c DEINEDOMAIN.tld
Hierbei wird ein neues Verzeichnis DEINEDOMAIN.tld
erzeugt, in dem Du die Konfigurationsdatei getssl.cfg
nun an Deine Gegebenheiten anpassen musst. Die Dokumentation von getssl sollte Dir hier weiterhelfen.
Unser Setup
Wir haben lediglich einen Webserver, der nicht per Rootshell erreichbar ist. Unser getssl läuft also auf einem LoxBerry bei uns im Smarthome Die Authentifizierung wird mit einem speziellen File auf dem Webserver durchgeführt, bei getssl heisst das: "Placing a file on the webserver containing the challenge token". Dieses File lassen wir per FTP direkt von getssl automatisch hochladen.
Eine weitere Schwierigkeit in unserem Setup ist, dass wir die erzeugten Zertifikate im Webfrontend unseres Webhosters jedes Mal manuell hochladen müssen. Wir lassen uns somit neu erzeugte Zertifikate automatisch per Email zusenden, sodass dann nur noch ein paar Klicks notwendig sind, um die Zertifikate zu aktivieren.
Getssl automatisieren
Wenn alles läuft, kannst Du getssl nun über einen Cronjob automatisieren. getssl erkennt dabei automatisch, ob deine Zertifikate noch gültig sind oder neu erzeugt werden müssen.
Mit folgendem Befehl werden die Zertifikate aller Deiner Domains geprüft und ggf. neu erzeugt:
getssl -w /opt/loxberry/webfrontend/legacy/getssl -a
Möchtest Du nur die Zertifikate einer einzelnen Domain prüfen und ggf. neu erzeugen, geht das mit:
getssl -w /opt/loxberry/webfrontend/legacy/getssl DEINEDOMAIN.tld
Beachte, dass wir hier immer die Working-Directory manuell setzen, sonst nutzt getssl standardmäßig .getssl
im Homeverzeichnis des aktuellen Users.
Ein entsprechender Eintrag in Deiner crontab könnte also folgendermaßen aussehen, um getssl täglich um 3:00 Uhr aufzurufen:
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO="" # # m h dom mon dow user command 0 3 * * * loxberry /opt/loxberry/webfrontend/legacy/getssl/getssl -w /opt/loxberry/webfrontend/legacy/getssl -a >/dev/null 2>&1
Spezialfall: Zertifikate per Mail senden
Wie erwähnt ist bei unserem Server ein weiterer Schritt notwendig, das wir die Zertifikate nicht automatisch von getssl auf dem Server speichern lassen können. Wir verschicken die neu erstellten Zertifikate an eine unserer Emailadressen, um sie von dort aus manuell auf den Server hochzuladen. Dazu verwenden wir folgendes Skript:
- cronjob.sh
#!/bin/bash TO="mail@example.com" cd /opt/loxberry/webfrontend/legacy/getssl/getssl for DOMAIN in * ; do if [ -d "$DOMAIN" ]; then echo "Checking $DOMAIN..." OUTPUT=`/opt/loxberry/webfrontend/legacy/getssl/getssl/getssl -w /opt/loxberry/webfrontend/legacy/getssl $DOMAIN` echo $OUTPUT | grep -q 'is valid for more than'; if [ $? -eq 1 ]; then echo "Cert for $DOMAIN was renewed. Sending by email" echo "New certificates for $DOMAIN were created. Please update." | \ s-nail -a "./$DOMAIN/fullchain.crt" -a "./$DOMAIN/$DOMAIN.crt" -a "./$DOMAIN/$DOMAIN.key" -s "New certificates for $DOMAIN" $TO fi fi done
Das Skript muss als /opt/loxberry/webfrontend/legacy/getssl/getssl/cronjob.sh
gespeichert werden und wird dann einmal täglich aufgerufen. Neue Zertifikate werden dann an die Emailadresse unter TO=
gesendet, sofern sie neu erzeugt worden sind.
Auf Debian-Systemen benötigt ihr noch das Paket s-nail
, welches ihr wie folgt nachinstallieren könnt:
sudo apt-get install s-nail
Der Eintrag in der crontab sieht analog zum vorherigen Kapitel aus, nur dass nicht getssl direkt aufgerufen wird sondern unser crontab.sh
Skript.