Umstellen der FHEM Webseite mit SSL auf https
Standardmässig finden wir die Webseite von FHEM über das unverschlüsselte http-Protokoll vor. Wenn wir den FHEM Server über das Internet zugänglich machen wollen, dann ist eine Verschlüsselung des Nachrichtenverkehrs durch eine Umstellung auf das https-Protokoll unerlässlich. Wenngleich dies nicht unser Ziel ist, dann ist der FHEM Server sehr oft über WLAN angebunden. Trotz Absicherung des WLAN über eine WPA2-Verschlüsselung macht es Sinn, die Weboberfläche des FHEM Rechners nur noch verschlüsselt anzubinden.
Wir wollen alle eine große Reichweite unseres WLAN im Haus haben. Umgekehrt ist das WLAN dann aber auch sehr oft noch bei entfernteren Nachbarn oder auf der Straße zu erreichen. Mit entsprechenden Tools ist es ein Leichtes, den WLAN Funkverkehr mitzuschneiden und später in Ruhe auszuwerten. Im Rahmen einer Demonstration eines ehemaligen Hackers durfte ich einmal Zeuge sein, wie einfach es ist, über ein eigentlich geschütztes WLAN mitzuschneiden, auf welchen Internetadressen man dort gerade unterwegs ist.
Demgemäß wollen wir es solchen Leuten möglichst schwer machen, an unsere Hausautomatisierungs-Rechner zu kommen. Stellen wir uns nur vor, was passieren kann, wenn jemand über die ungesicherte Weboberfläche Garage und Haustüre öffnen könnte.
Selbstsigniertes Zertifikat erstellen
Zunächst melden wir uns per ssh an unserem Raspberry Pi an. Wir erstellen ein Verzeichnis, in dem wir die Schlüssel erzeugen und von dort auf dem Minirechner verteilen. Zunächst erzeugen wir den privaten Schlüssel.
cd mkdir https cd https openssl genrsa -out server.key 2048
Mit diesem privaten Schlüssel erzeugen wir den öffentlichen Schlüssel, den wir für das SSL Zertifikat brauchen.
openssl req -new -key server.key -out server.csr
Hier werden wir nach einigen Dingen gefragt. In meinem Beispiel hat mein lokaler Raspberry Pi den IP-Namen fhembackup. Die einzelnen Fragen sind in meinem Falle wie folgt:
- Country Name (2 letter code):
DE
- State or Province Name (full name):
Bayern
- Locality Name (eg, city):
Pfarrkirchen
- Organization Name (eg, company):
privat
- Organizational Unit Name (eg, section):
- Common Name (e.g. server FQDN or YOUR name):
fhembackup
- Email Address:
martin.koch@hausautomatisierung-koch.de
Nun kommt noch die Frage nach einem Passwort. Dieses sollte natürlich nicht zu einfach sein, zu lange darf es aber auch nicht sein. In meinem Falle hatte er angemeckert, dass das Passwort nicht länger als 20 Bytes sein darf.
Danach kommt nur noch die Frage nach einem optionalen Firmennamen. Diese kann man leer lassen.
Schließlich generieren wir das Zertifikat, dessen Gültigkeitsdauer wir auf 5 Jahre = 1826 Tage (ein Schaltjahr alle 4 Jahre) festlegen.
cp server.key server.key.orig openssl rsa -in server.key.orig -out server.key openssl x509 -req -days 1826 -in server.csr -signkey server.key -out server.crt
Als Bestätigung der Erzeugung des Zertifikats bekommen wir als Bestätigung folgende Ausgabe:
Zertifikat installieren
Sobald wir die Zertifikate erzeugt haben, müssen wir diese Dateien nur noch in das richtige Verzeichnis kopieren, auf das der FHEM Server zugreift. Das Installationsverzeichnis von FHEM liegt unter /opt/fhem
. Im Unterverzeichnis cert
sind die entsprechenden Zertifikate zu hinterlegen. Wir kopieren die Dateien nun noch dorthin. Zur Absicherung setzen wir noch die richtigen Berechtigungen.
sudo mkdir /opt/fhem/certs sudo chmod 711 /opt/fhem/certs sudo cp ~/https/server.key /opt/fhem/certs/server-key.pem sudo cp ~/https/server.crt /opt/fhem/certs/server-cert.pem sudo chmod 644 /opt/fhem/certs/server-key.pem sudo chmod 644 /opt/fhem/certs/server-cert.pem
Nun haben wir alles installiert, so dass wir die Weboberfläche nur noch verschlüsselt erreichen können.
FHEM auf https umstellen
Wir müssen jetzt nur noch in FHEM das Attribut HTTPS für die Oberflächen WEB, WEBphone und WEBtablet setzen. Dazu geben wir in der Kommandozeile von FHEM (in umgekehrter Reihenfolge) die Attribute an und stellen alle drei Oberflächen auf HTTPS um:
attr WEBtablet HTTPS attr WEBphone HTTPS attr WEB HTTPS
Als letztes speichern wir die geänderten Attribute ab, in dem wir auf Save config
klicken. Im Folgenden ist die Weboberfläche nur noch über die sichere https-Variante aufrufbar. Sobald wir nun im Browser die aufgerufene Seite noch einmal laden wollen, kann die Seite nicht mehr gefunden werden, da nun das Protokoll http abgewiesen wird.
Haben wir bisher als Adresse http://fhembackup:8083
eingeben müssen, so ist sie jetzt nur noch über https://fhembackup:8083
zu erreichen.
Zuletzt aktualisiert am 25.06.2017.