Raspberry Pi & HTTPS: Unterschied zwischen den Versionen

Aus FHEMWiki
(Rechtevergabe für Zertifikatsverzeichnis ergänzt)
K (little typo ;-))
 
(19 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Damit das Kennwort verschlüsselt übertragen wird, ist eine HTPPS Verbindung wichtig.
Dieser Artikel beschreibt das Vorgehen unter '''Linux'''. Um unter '''Windows''' ein SSL Zertifikat zu erstellen hilft eine Bat Datei aus diesem {{Link2Forum|Topic=8810|Message=46726|LinkText=Forenbeitrag}}.


Damit das Kennwort verschlüsselt übertragen wird, ist eine HTTPS Verbindung wichtig.
Die folgenden Schritte sind direkt auf dem [[Raspberry Pi|Raspberry]] oder über ein Terminal auszuführen.
Zunächst müssen folgende Pakete nachinstalliert werden:
Zunächst müssen folgende Pakete nachinstalliert werden:


  <nowiki>sudo apt-get update
  <nowiki>sudo apt-get update
sudo apt-get install perl-io-socket-ssl
sudo apt-get install libio-socket-ssl-perl
sudo apt-get install libio-socket-ssl-perl</nowiki>
sudo apt-get install libwww-perl</nowiki>
Dann muss im modpath Verzeichnis (Das ist beim RPi /opt/fhem) das Verzeichnis "certs" erstellt werden. In dieses Verzeichnis kommen zwei Dateien die mithilfe von OpenSSL erstellt werden: server-key.pem und server-cert.pem. Unter Linux und MacOSX kommen wir über das Terminal an die Dateien.
 
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:
 
<nowiki>cd /opt/fhem
sudo mkdir certs</nowiki>


Im Terminal und Linux/OSX geht dies mit folgendem Befehl:
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:


  <nowiki>openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem</nowiki>
  <nowiki>cd /opt/fhem/certs
Ihr könnt mit dem Terminal auch direkt in das modpath und mit mkdir certs und cd certs das Verzeichnis erstellen. Oder einfach die Dateien irgendwo erstellen und mit dem Finder oder Windows Explorer dort hin kopieren.
sudo openssl req -new -x509 -nodes -out server-cert.pem -days 3650 -keyout server-key.pem</nowiki>


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.  
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


  <nowiki>cd /opt/fhem
  <nowiki>sudo chmod 644 /opt/fhem/certs/*.pem
chmod 711 certs
sudo chmod 711 /opt/fhem/certs</nowiki>
cd certs
 
chmod 644 *.pem</nowiki>
Damit auch FHEM auf das Verzeichnis zugreifen darf (z.B. wenn <code>attr global backup_before_update</code> gesetzt ist), muss noch der Besitzer geändert werden.
<nowiki>
sudo chown -R fhem:dialout /opt/fhem/certs/</nowiki>
 
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.


Anschließend in FHEM mit dem Befehl
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


  <nowiki>attr WEB HTTPS</nowiki>
  <nowiki>attr WEB sslVersion TLSv12:!SSLv3
Für das Smartphone Interface entsprechend
attr WEB HTTPS 1</nowiki>


<nowiki>attr WEBphone HTTPS</nowiki>
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.
HTTPS aktivieren, nach einem Neustart erfolgt der Zugriff per HTTPS über [https://192.168.n.n:8083/fhem https://192.168.n.n:8083/fhem] . Es ist wichtig die Adresse mit https:// aufzurufen, da es keine automatische Weiterleitung von http auf https existiert.
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.


[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]

Aktuelle Version vom 23. Juni 2017, 10:08 Uhr

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.