Schlagwort-Archive: rsa

FHEM mit https absichern

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.

FHEM https

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:

FHEM serverkey

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.