From 7f2627dbc8e999c987c536205868af56b587b5e8 Mon Sep 17 00:00:00 2001 From: bartbutenaers Date: Sat, 21 Aug 2021 22:21:58 +0200 Subject: [PATCH] Key and certificate as string or buffer --- packages/node_modules/node-red/red.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/node_modules/node-red/red.js b/packages/node_modules/node-red/red.js index 2b934fb56..5c40d7794 100755 --- a/packages/node_modules/node-red/red.js +++ b/packages/node_modules/node-red/red.js @@ -234,8 +234,13 @@ httpsPromise.then(function(startupHttps) { // Get the result of the function, because createServer doesn't accept functions as input Promise.resolve(settings.https()).then(function(refreshedHttps) { if (refreshedHttps) { + // The key/cert needs to be updated in the NodeJs http(s) server, when no key/cert is yet available or when the key/cert has changed. + // Note that the refreshed key/cert can be supplied as a string or a buffer. + var updateKey = (server.key == undefined || (Buffer.isBuffer(server.key) && !server.key.equals(refreshedHttps.key)) || (typeof server.key == "string" && server.key != refreshedHttps.key)); + var updateCert = (server.cert == undefined || (Buffer.isBuffer(server.cert) && !server.cert.equals(refreshedHttps.cert)) || (typeof server.cert == "string" && server.cert != refreshedHttps.cert)); + // Only update the credentials in the server when key or cert has changed - if(!server.key || !server.cert || !server.key.equals(refreshedHttps.key) || !server.cert.equals(refreshedHttps.cert)) { + if(updateKey || updateCert) { server.setSecureContext(refreshedHttps); RED.log.info(RED.log._("server.https.settings-refreshed")); }