NEWS
UNSOLVED Umgebungsvariablen
-
Hi! Ich habe ein Verständnisproblem Mit dem Reiter "Umgebung" in den Instanzeinstellungen von Node-Red.
Meine Versuch war, die Variable "NODE_TLS_REJECT_UNAUTHORIZED" mit dem Wert "0" zu setzen. Entsprechend habe ich das auch eingetragen.
Die Absicht dahinter war, dass unauthorisierte Verbindungen bzw. Verbindungen zu Servern mit einem selbst signierten Zertifikat nicht zurückgewiesen werden.Details: Ich habe in meinem internen Netz einen https Server laufen, zu dem ich POST Requests aufbauen möchte. Auf diesem Server ist ein selbst signiertes Zertifikat hinterlegt. Der Server ist von Außen weder über Port 80 noch 443 erreichbar, daher scheidet nach meinem Verständnis wohl auch ein Zertifikat von Let's encrypt aus - darum soll es aber auch gar nicht gehen.
Wenn ich jetzt im Node-Red einen Flow mit http-request erstelle, schlägt dieser mit dem Fehler "RequestError: self-signed certificate" fehl - trotz oben gesetzter Umgebungsvariable.Was mache ich hier falsch? Muss diese Variable bereits mit start des Node.js Controllers gesetzt sein? Wie stelle ich das an? Via Startskript des IOBroker?
-
Nachtrag: Ich habe gerade im Log das hier gesehen:
(node:67825) Warning: Setting the NODE_TLS_REJECT_UNAUTHORIZED environment variable to '0' makes TLS connections and HTTPS requests insecure by disabling certificate verification.(Use `node --trace-warnings ...` to show where the warning was created)
und
Node-RED: 5 Dec 10:55:57 - [error] [http request:2261599917766068] RequestError: self-signed certificate at ClientRequest.<anonymous> (file:///opt/iobroker/node_modules/got/dist/source/core/index.js:789:107) at Object.onceWrapper (node:events:632:26) at ClientRequest.emit (node:events:529:35) at TLSSocket.socketErrorListener (node:_http_client:501:9) at TLSSocket.emit (node:events:517:28) at emitErrorNT (node:internal/streams/destroy:151:8) at emitErrorCloseNT (node:internal/streams/destroy:116:3) at process.processTicksAndRejections (node:internal/process/task_queues:82:21) at TLSSocket.onConnectSecure (node:_tls_wrap:1659:34) at TLSSocket.emit (node:events:517:28) at TLSSocket._finishInit (node:_tls_wrap:1070:8) at ssl.onhandshakedone (node:_tls_wrap:856:12)
Die Warnung sagt mir, dass die Variable zwar erkannt, aber augenscheinlich ignoriert wird. Habe ich sonst noch eine Chance mit dem self-signed certificate?
-
@dago79
Mach einfach den Haken rein (Disable strict HTTP parsing), dann sollte es funktionieren:Die Umgebungsvariable brauchst Du nicht! Ich glaube eher, dass diese Umgebungsvariable für ankommende HTTP Requests gilt.
-
@mickym Danke! Den Haken habe ich gesetzt, das ändert aber leider nichts am Verhalten.
-
-
@marc-berg Danke, das scheint die Lösung zu sein! Der Fehler ist zumindest weg. Am Rest muss ich noch arbeiten
-
@dago79 Du musst eine TLS Konfiguration aufmachen, wenn Du https nutzen willst.
Dort kannst Du dann Deine Zertifikate hochladen:
Ggf. kannst auch Server überprüfen weghaken. .
Aber dort kannst Du auch Deine private CA hochladen. Diese TLS Konfiguration kannst Du mehrfach nutzen.
Das reject würde ich wegmachen - sonst kannst Dir ja den privaten Krempel im lokalen Netz sparen.
-
@mickym Danke, das werde ich bei Gelegenheit auch einmal probieren. Zunächst hat aber der Hinweis mit dem msg.rejectUnauthorized von @Marc-Berg zum Ziel geführt!