Den Webzugriff auf eurer FHEM-Installation kann man relativ schnell über ein Attribut mit einem Passwort schützen. In diesem Artikel erkläre ich euch, wie ihr eine Passwortabfrage erstellt und das Passwort über eine sichere Verbindung (HTTPS) mit einem SSL Zertifikat überträgt.
Bevor wir das Passwort einrichten, müssen wir das gewünschte Passwort zunächst Base64 codieren. Unter Linux reicht dazu der Befehl:
echo -n benutzername:passwort | base64
Eine weitere Möglichkeit bieten sogenannte Online Base64 Encoder (www.base64online.com)
Man erhält nach der Codierung eine Folge von Buchstaben, Zahlen und Zeichen. Zum Beispiel:
SGF1czpHYXJ0ZW4=
Diese Folge ist nun euer codierter Benutzername und Passwort. Für die Einbindung in FHEM dient das Modul „allowed“.
define allowedWEB allowed
Diesem Modul lässt sich nun das kodierte Passwort als Attribut hinzufügen:
attr allowedWEB basicAuth SGF1czpHYXJ0ZW4=
Anschließend wird angegeben, für welche WEB-Instanz das Passwort gesetzt werden soll:
attr allowedWEB validFor WEB,WEBphone,WEBtablet
Zum Schluss noch die Änderungen abspeichern und FHEM neu starten:
save
shutdown restart
Möchte man nun auf FHEM zugreifen, wird zuerst der Benutzername und das Passwort abgefragt.
Bei einer Übertragung von Passwörtern, sollte man natürlich darauf achten, dass diese verschlüsselt übertragen werden. Dazu richten wir eine HTTPS-Verbindung mit einem SSL-Zertifikat ein. Zunächst müssen wir auf dem Raspberry noch einige Pakete installieren. Über SSH eine Verbindung zum Raspeberry herstellen und mit folgenden Befehle die Pakete installieren:
sudo apt-get update sudo apt-get install libio-socket-ssl-perl sudo apt-get install libwww-perl
Anschließend erstellen wir noch einen Ordner im FHEM-Installationsordner, wo wir später das SSL-Zertifikat abspeichern.
cd /opt/fhem sudo mkdir certs
Nun können wir das SSL Zertifikat erstellen:
cd /opt/fhem/certs sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem
Das SSL-Modul muss die erzeugten Dateien server-key-pem und server-cert.pem verwenden dürfen, wir setzen also noch die benötigten Rechte:
sudo chmod 644 /opt/fhem/certs/*.pem sudo chmod 711 /opt/fhem/certs
Damit die FHEM-Installation die nun eingerichtet sicher Verbindung nutzt, müssen wir noch ein Attribut setzen:
attr WEB HTTPS
Nach dem speichern der Konfiguration und einem Neustart von FHEM erfolgt der Zugriff nun per HTTPS.
save shutdown restart
Nicht wundern, wenn euer Internet-Browser Sicherheitsbedenken bezüglich des Zertifikats hat. Aufgrund der Tatsache, dass wir keine „vertrauenswürdige zertifizierungsstelle“ sind, gilt unser selbst erstellte Zertifikat als unsicher. Aber keine Panik, euer Passwort wird trotzdem sicher übertragen.
Diese Absicherung mit SSL und HTTPS ist vor allem sehr wichtig, wenn man den Raspberry aus dem Internet erreichbar macht.
Hallo Daniel,
ich habe probiert, die Umstellung gemäß deiner Anleitung umzusetzen, wurde dadurch aber promt von meinem Pi ausgesperrt.
Nachdem ich
attr WEB basicAuth … (mit meinem Base64-String, im schlimmsten Fall mit Fehlern)
eingegeben hatte, wurde ich direkt aus der Oberfläche katapultiert und neue Benutzerdaten wurde abgefragt. Leider funktionieren meine Login-Daten jetzt nicht mehr. Über die bash komme ich weiterhin auf den Pi und die fhem.cfg wurde anscheinend nicht verändert, mein altes Passwort wird weiterhin klar angezeigt.
Ich habe dann probiert, über die bash die config zu verändern, leider ohne Erfolg, ich komme nicht mehr in das Frontend.
Was mache ich falsch?
MfG Larimow
Hallo Larimow,
das ist natürlich ärgerlich. Eigentlich müsste es doch reichen in der fhem.cfg das Attribut basicAuth zu löschen. Aber das scheint ja nicht zu funktionieren. Komisch. Er fragt ja nach einem Benutzer und Passwort, das Einrichten hat ja anscheinend geklappt. Wie du bereits selber erwähnt hast, kann es natürlich sein, dass der Base62-String falsch ist.
Ich habe es bei mir mal versucht die Passwortabfrage zu löschen. Habe dazu einfach in der fhem.cfg folgende Einträge komplett gelöscht:
define allowed_WEB allowed
attr allowed_WEB basicAuth RGxxxxxxxxxxxxxxxxxxxxxx
attr allowed_WEB room Settings
attr allowed_WEB validFor WEB
Danach war die Passwortabfrage weg und ich konnte auf das FrontEnd zugreifen ohne ein Benutzer oder Passwort eingeben zu müssen.
Gruß Daniel
Bei mir genau das gleiche unter Debian 8. Komme nicht mehr aufs Frontend. Fhem.confg gegen ein Backup ersetzt und trotzdem will er Benutzer und Passwort haben? Iegentwas läuft hier falsch.
Hallo Steffmaster,
ich kann mir nur wiederholen. Ich kann leider nicht sagen, wodran es liegen kann. Habe auf meinem Test-System die SS- und die Passwort-Einrichtung nochmal durchgeführt. Hat alles problemlos funktioniert. Anschließend habe ich dann den Eintrag „attr allowed_WEB basicAuth RGxxxxxxxxxxxxxx“ aus der fhem.cfg gelöscht und konnte dann ohne Passworteingabe auf das FrontEnd zugreifen. Und laut mehreren Einträgen im FHEM-Forum ist dies auch der gängige Weg. Über diesen Eintrag basicAuth kann man auch den Benutzername und das Passwort auslesen. Einfach ein base64-Decoder verwenden.
Gruß Daniel
Hallo Zusammen,
mir ist es ähnlich ergangen, bis ich bemerkte, dass mein PI auf englischer Tastatur lief und dadurch natürlich die Sonderzeichen komplett andere waren.
Vielleicht hilft Euch ja dieser Tipp weiter.
LG
Hallo Dominik,
danke für den Tipp, auf diese Idee bin ich noch gar nicht gekommen.
Gruß Daniel
Hallo Daniel,
danke für diese schöne Anleitung!
Ich möchte noch eine Kleiningkeit hinzufügen:
attr WEBphone HTTPS
und
attr WEBtablet HTTPS
sollten auch direkt gesetzt werden, damit alle Verbindungen sicher sind.
Hallo,
im logfile erscheint bei mir fogende Meldung:
FHEMWEB SSL/HTTPS error: Die Verbindung wurde vom Kommunikationspartner zurückgesetzt SSL accept attempt failed
Ist dies bedingt durch das selbst erstelle Zertifikat?
VG
Sehr gute Erklärung zur Einrichtung von SSL und insbesondere das validFor habe ich jetzt gerade ausprobiert und ein paar Configeinträge bei mir gespart. Danke dafür! Kennst du schon BasicAuthExpiry? Damit sparst du dir Logins 🙂 Siehe: https://demaya.de/fhem-eingeloggt-bleiben-basicauthexpiry/
Hallo Demaya,
danke für das Lob. Das Tribut „BasicAuthExpiry“ kannte ich noch nicht. Muss aber auch sagen, dass meine Login-Daten vom Browser schon automatisch eingegeben werden ? Also soooo umständlich ist es dann nicht ?
Was ich mich aber frage, was ist, wenn man sich mal auf einem öffentlichen Computer in FHEM einloggt. Dann müsste man ja das Cookie manuell wieder löschen, damit es nicht gespeichert wird.
Gruß Daniel
Hi Daniel, genau… man muss Ihn löschen oder eben im Inkognitomodus surfen. Das ist ja an sich keine schlechte Idee an einem öffentlichen Computer. Gruß demaya
Bei mir geht es hier irgendwie nicht weiter :/
Wenn ich SSL ohne diese Rechte anschalte, bekomme ich gar keinen Zugriff mehr auf FHEM :/
Hallo Robert,
befinden sich den die Dateien im Ordner?
Schau mal nach, welche Dateien sich im Ordner „/opt/fhem/certs“ befinden. Vllt ist etwas beim Erstellen der Dateien schief gelaufen und es existieren diese nun gar nicht.
cd /opt/fhem/certs
ls
Gruß Daniel
Hi das ist jetzt schon ne Weile her und alles läuft prima, doch jetzt bin ich dabei mit IFTT zu experimentieren und da fällt mir das Zertifikat in den Rücken….Gibt es eine Möglichkeit das jetzige Zertifikat nachträglich z.B. mit einem Zertifikat von FesteIP zu ersetzen? Sorry aber das sind für mich immer noch Bücher mit 7 Siegeln. Würde für ne Lösung auch zahlen….
Liebe Grüße Matthias
Hallo Matthias, so fit bin ich auch nicht in diesem Thema. Hab mal bisschen im Internet gesucht. Vllt hilft dir dieser Forums-Beitrag etwas: https://forum.fhem.de/index.php/topic,43339.0.html
Das geht so in etwa in deine Richtung.
Gruß Daniel
Hallo, rufst Du fhem https via IP auf?