Raspberry Pi & HTTPS

Aus FHEMWiki

Dieser Artikel beschreibt das Vorgehen unter Linux. Um unter Windows ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus diesem Forenbeitrag.

Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.

Die folgenden Schritte sind direkt auf dem Raspberry oder über ein Terminal auszuführen. Zunächst müssen folgende Pakete nachinstalliert werden:

sudo apt-get update
sudo apt-get install libio-socket-ssl-perl
sudo apt-get install libwww-perl

Anschließend muss noch im fhem-Verzeichnis (befindet sich in der Regel unter /opt) das Verzeichnis "certs" für die Zertifikate erstellt werden. Dies geht wie folgt:

cd /opt/fhem
sudo mkdir certs

In dieses Verzeichnis kommen zwei Dateien, die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Dazu wechselt man in das neu erstellte Verzeichnis. Auf der Konsole ist nun folgendes auszuführen:

cd /opt/fhem/certs
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem

Damit das SSL-Modul die erzeugten Dateien verwenden kann, muss das certs-Verzeichnis Ausführrechte haben (es ist auch kein Fehler, wenn die Dateien selbst nur die nötigsten Rechte haben). Die Berechtigungen werden wie folgt gesetzt

sudo chmod 644 /opt/fhem/certs/*.pem
sudo chmod 711 /opt/fhem/certs

Damit auch FHEM auf das Verzeichnis zugreifen darf (z.B. wenn attr global backup_before_update gesetzt ist), muss noch der Besitzer geändert werden.

sudo chown -R fhem:dialout /opt/fhem/certs/

Das war auch schon alles, was man auf dem Raspberry Pi über die Konsole tun muss. Als nächstes öffnen wir FHEM im Browser. Hier müssen wir nun die Web Instanz suchen welche wir auf HTTPS umstellen möchten. In der Regel ist diese Instanz als WEB angelegt. Evtl. habt ihr mehrere Webinstanzen (z.B. WEBphone, WEBtablet) oder hattet das Define anders benannt, dann müsst Ihr die folgenden Angaben entsprechend ändern.

Wechselt in FHEMWEB in die Detailansicht des Define WEB (die URL lautet z.B. http://fhem:8083/fhem?detail=WEB). Dort setzt Ihr nun die folgenden Attribute in der angegebenen Reihenfolge

attr WEB sslVersion TLSv12:!SSLv3
attr WEB HTTPS 1

Sowie das Attribut auf HTTPS geändert wurde ist, HTTPS aktiviert und FHEM nur noch über https://192.168.n.n:8083/fhem erreichbar. Ihr merkt das sofort, da ein Browserzugriff auf FHEM unter dem aktuellen http Zugriff nicht mehr möglich ist. Einfach http gegen https austauschen. Es kommt eventuell noch eine Browseranfrage, ob ihr diesen https Zugriff zulassen wollt. Zugriff erlauben und es ist der Zugriff auf FHEM wie gehabt möglich, nur halt gesichert. Nicht vergessen, die Konfiguration zu speichern, damit die Änderungen beibehalten werden. Es ist wichtig die Adresse mit https:// aufzurufen, da keine automatische Weiterleitung von http auf https existiert.