HowTo: Node Red – Verbindung verschlüsseln

In dem Artikel NodeRed – Benutzerlogin einrichten wurde bereits darauf hingewiesen, dass es sehr wichtig ist den Zugang zu Eurer NodeRed-Konfigurationsoberfläche abzusichern. Gerade wenn Ihr über das Internet auf eure NodeRed-Konfiguration zugreift solltet Ihr sicherstellen, dass wirklich nur Ihr Zugriff darauf habt.

Neben der Einrichtung eines Benutzerlogins ist es auch wichtig und nützlich die Verbindung zwischen Eurem Browser und dem NodeRed-Server zu verschlüsseln.

Wie Ihr dabei vorgehen könnt ist im folgenden Artikel beschrieben.


Sicherheitshinweise

Ich weiß die folgenden Hinweise sind immer irgendwie lästig und wirken unnötig. Aber leider haben schon viele Menschen die es "besser" wussten aus Leichtsinnigkeit Augen, Finger oder anderes verloren bzw. sich verletzt. Im Vergleich dazu ist ein Datenverlust fast nicht der Rede Wert, aber auch diese können echt ärgerlich sein. Deswegen nehmt Euch bitte fünf Minuten Zeit um die Sicherheitshinweise zu lesen. Denn auch das coolste Projekt ist keine Verletzung oder anderen Ärger wert.
https://www.nerdiy.de/sicherheitshinweise/

Affiliatelinks/Werbelinks

Die hier in aufgeführten Links zu Online-Shops sind sogenannte Affiliate-Links. Wenn Du auf so einen Affiliate-Link klickst und über diesen Link einkaufst, bekommt Nerdiy.de von dem betreffenden Online-Shop oder Anbieter eine Provision. Für Dich verändert sich der Preis nicht. Falls Du Deine Einkäufe über diese Links tätigst unterstützt Du Nerdiy.de dabei auch in Zukunft weitere nützliche Projekte anbieten zu können. 🙂 


Voraussetzungen

Hilfreiche Artikel:
Damit Ihr einen Benutzerlogin einrichten könnt sollte NodeRed natürlich schon installiert sein.
Wie ihr einen RaspberryPi dazu vorbereitet und dann NodeRed darauf installiert ist in den folgenden Artikeln beschrieben.

Die folgenden drei Artikel beschreiben was zu tun ist um den RaspberryPi soweit vorzubereiten:
RaspberryPi – Einrichten für Nerdiys!
RaspberryPi – Die Erste Konfiguration!
RaspberryPi – Den RaspberryPi über SSH steuern

NodeRed – Installation von NodeRed auf dem RaspberryPi

Benötigtes Material:
-keins-

Benötigtes Material:

In der folgenden Liste findet Ihr alle Teile die Ihr zur Umsetzung dieses Artikels benötigt.


Per SSH auf dem RaspberryPi einloggen

Um zu beginnen müsst Ihr Euch als erstes mit Putty per SSH auf dem RasPi einloggen. Wie das geht ist im Artikel RaspberryPi - Den RaspberryPi über SSH steuern beschrieben.

Nach der Eingabe Eures Benutzernamen und Passworts könnt Ihr die ersten Befehle eingeben.

Ordner für die Zertifikate erstellen

Um die Zertifikatsdateien an einem zentralen Ort speichern zu können empfiehlt es sich einen Ordner im NodeRed Verzeichnis zu erstellen. Sofern Euere „.node-red“-Ordner in Eurem home-verzeichnis liegt – was der Fall sein sollte, wenn Ihr NodeRed mit dem Installationsskript installiert habt – könnt ihr einen neuen Ordner mit folgendem Befehl erstellen.

mkdir /home/pi/.node-red/certificates

Nachdem Ihr diesen Befehl ausgeführt habt sollte ein neuer Ordner namens „certificates“ in Eurem „.node-red“ Ordner erstellt worden sein.


In den erstellten Ordner wechseln

Damit die zu erstellenden Zertifikatsdateien auch in diesem neu erstelltem Ordner gespeichert werden solltet ihr nun mit folgendem Befehl in diesen wechseln.

cd /home/pi/.node-red/certificates/


Zertifikatsdateien erzeugen

Damit die Verschlüsselung Eurer Verbindung zu Node-Red funktioniert müsst Ihr ein paar Zertifikatsdateien erstellen. Mit folgendem Befehel erstellt Ihr eine Schlüsseldatei.

openssl req -newkey rsa:2048 -new -nodes -keyout key.pem -out csr.pem
Nach der Eingabe dieses Befehls werdet Ihr nach ein paar Details gefragt die in Eurem Schlüssel eingetragen werden. Hier könnt Ihr alles natürlich – soweit möglich – korrekt ausfüllen, müsst Ihr aber nicht. Der einfachheit halber könnt Ihr auch alles leer lassen oder (so wie in diesem Beispiel) nur Striche eintragen.

openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out server.crt

Dieser Befehl erstellt ein Zertifikat und signiert es mit dem von euch erstellten Schlüssel.

Pfad zu den Zertifikatsdateien in die NodeRed-Konfigurationsdatei eintragen

Nun müsst Ihr Eurere NodeRed-Installation noch mitteilen, dass die Verbindung in Zukunft verschlüsselt ablaufen soll. Außerdem müsst Ihr dazu angeben wo eure soeben erstellten Zertifikatsdateien liegen.
Diese Informationen müssen in die Konfigurationsdatei von NodeRed eingetragen werden. Öffnet dazu Eure NodeRed-Konfigurationsdatei mit folgendem Befehl:

sudo nano /home/pi/.node-red/settings.js

In der Konfigurationsdatei müssen mehrere Einstellungen/werte angepasst werden.
Als erstes entfernt Ihr die beiden Schrägstriche vor „var fs = requiere(„fs“);“. Dadurch wird eine Funktion geladen, welche es NodeRed ermöglicht auf die Zertifikatsdateien zuzugreifen.
Nun navigiert Ihr mit den Pfeiltasten runter bis zur angegebenen Position in der Konfigurationsdatei.
Dort angekommen entfernt Ihr wieder die Schrägstriche vor „https: {“ und der drei Zeilen tiefer liegenden Zeile mit „},“. Das entfernen der Schrägstriche aktiviert diesen Funktionsblock und die darin enthaltenen Einstellungen.

Damit dieser Funktionsblock aber auch die Pfade zu Euren Zertifikatsdateien enthält müsst Ihr diese noch angeben. Dazu kopiert Ihr folgenden Text in den Funktionsblock.

key: fs.readFileSync('/home/pi/.node-red/certificates/key.pem'),
cert: fs.readFileSync('/home/pi/.node-red/certificates/server.crt')
Habt ihr die Befehle in den Funktionsblock kopiert sollte das ganze in etwa so aussehen.
Die letze Änderung findet Ihr ein paar Zeilen tiefer. Dort müsst Ihr die beiden Schrägstriche vor „requireHttps: true,“ entfernen. Dies sollte dazu führen, dass Ihr automatisch auf die sichere Verbindung umgeleitet werdet falls ihr über eine unsichere Verbindung versucht auf NodeRed zuzugreifen. ACHTUNG: Hier unbedingt darauf achten, dass nach dem „requireHttps: true“ ein Komma eingetragen ist. Falls dieses fehlt startet euere NodeRed-Installation nicht korrekt.
habt ihr alle Änderungen vorgenommen, könnt ihr die Konfigurationsdatei wieder schließen. Drückt dazu auf „STRG+X“…
…und bestätigt die Nachfrage mit „Y“ und „Enter“.

NodeRed neu starten

Damit die eingetragenen Änderungen in der Konfigurationsdatei nun auch übernommen werden müsst Ihr NodeRed nun neu starten. Dies geht mit folgendem Befehl.

sudo service nodered restart


NodeRed Konfigurationsseite aufrufen

Nach dem Ihr NodeRed neugestartet habt werdet ihr sehen, dass eure NodeRed-Installation unter der alten URL nicht mehr erreichbar ist. Dies liegt daran, dass Ihr vorher über „http://“ auf eure NodeRed-Konfigurationsseite zugegriffen habt, diese nun aber nur noch unter „https://“ erreichbar ist. Die Screenshots zeigen den Weg mit dem browser Google Chrome. Bei anderen Browsern ist dieser Weg aber ähnlich.

Der Zugriff über die alte URL ist nicht mehr möglich.

Damit ihr nun wieder auf Eure NodeRed-Konfigurationsseite zugreifen könnt müsst Ihr der URL zu Eurer NodeRed-Konfigurationsseite ein „https://“ voranstellen.

URL zur Konfigurationsseite mit vorangestelltem „https://“.

Die meisten Browser warnen an dieser Stelle nun davor, dass das Zertifikat mit dem Ihr Eure Verindung verschlüsselt selbstsigniert ist und somit nicht von einer dritten Stelle validiert ist. Auf normalen Webseiten ist dies tatsächlich ein Problem, weil dies darauf hinweisen kann, dass die angeblich sichere Verbindung in wirklichkeit doch nicht sicher ist. In diesem Fall ist es aber in Ordnung, weil wir das Zertifikat ja soeben selbst erstellt haben.

Sicherheitswarnung des Browsers(In diesem Fall Google Chrome).

Um die Warnung zu umgehen klickt ihr auf „Erweitert“…

…und dann auf „Weiter zu …“. Nun werdet Ihr auf die gewohnte Konfigurationsseite euer NodeRed-Installation weitergeleitet.

NodeRed-Konfigurationsseite aufgerufen mit nun verschlüsselter Verbindung.

Viel Spaß mit dem Projekt

Ich hoffe bei euch hat alles wie beschrieben funktioniert. Falls nicht oder ihr Fragen oder Anregungen habt lasst es mich in den Kommentaren bitte wissen. Ich trage dies dann ggf. in den Artikel nach.
Auch Ideen für neue Projekte sind immer gerne willkommen. 🙂

P.S. Viele dieser Projekte - besonders die Hardwareprojekte - kosten viel Zeit und Geld. Natürlich mache ich das weil ich Spaß daran habe, aber wenn Du es cool findest, dass ich die Infos dazu mit Euch teile, würde ich mich über eine kleine Spende an die Kaffeekasse freuen. 🙂

Buy Me a Coffee at ko-fi.com       

2 Kommentare

  1. Hallo,
    vielen Dank für Deinen Beitrag.

    Mich stört diese Sicherheitswarnung und alle anderen User in meinem Haushalt auch. Mal eben nach der Zimmertemperatur schauen ist immer mit einigen Klicks verbunden.
    Wie kann ich die Sicherheitswarnung des Browsers (wenn ich das Dasboard öffne) umgehen?
    Ich habe Node-Red auf einem Raspberry laufen.

    Vielen Dank und schöne Grüße

    1. Hi Commendation,
      gerne. 🙂
      Das Problem damit ist, dass das selbst signierte Zertifikat vom Browser nicht akzeptiert wird. Das ist eigentlich so gewollt aber natürlich nervig.
      Du hast soweit ich weiß zwei Möglichkeiten:
      – Auf jedem Gerät das Zertifikat installieren. Ich hab leider keine Annleitung dazu glaube aber auch, dass das nur eine Option für Windows wäre. Auf Android/Apple Geräten ist das (soweit ich weiß) aus Sicherheitsgründen nicht möglich.
      – Da wäre vllt. Option zwei möglich: Mit LetsEncrypt lassen sich signierte SSL Zertifikate erstellen. Leider habe ich dazu auch keine Anleitung. Aber vllt. hilft das folgende ja weiter. 🙂
      https://discourse.nodered.org/t/node-red-ssl-using-letsencrypt-certbot/17606
      Beste Grüße
      Fabian

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.