Запуск узла с красным стартом после попытки создать HTTPS «Ошибка 140AB18F: процедуры SSL: SSL_CTX_use_certificate: слишком маленький ключ» - PullRequest
0 голосов
/ 07 октября 2019

Привет всем, я настраивал удаленный доступ к узлу red для моего Raspberry Pi. Я изменил settings.js и установил node-red-admin, но когда я перехожу на запуск node-red, я получаю следующую ошибку:

Error: error:140AB18F:SSL routines:SSL_CTX_use_certificate:ee key too small
at Object.createSecureContext (_tls_common.js:131:17)
at Server.setSecureContext (_tls_wrap.js:1152:27)
at Server (_tls_wrap.js:1030:8)
at new Server (https.js:65:14)
at Object.createServer (https.js:89:10)
at Object.<anonymous> (/usr/lib/node_modules/node-red/red.js:141:20)
at Module._compile (internal/modules/cjs/loader.js:945:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:962:10)
at Module.load (internal/modules/cjs/loader.js:798:32)
at Function.Module._load (internal/modules/cjs/loader.js:711:12) {
library: 'SSL routines',
  function: 'SSL_CTX_use_certificate',
  reason: 'ee key too small',
  code: 'ERR_SSL_EE_KEY_TOO_SMALL'
}
nodered.service: Main process exited, code=exited, status=1/FAILURE
nodered.service: Failed with result 'exit-code'.
nodered.service: Service RestartSec=100ms expired, scheduling restart.
nodered.service: Scheduled restart job, restart counter is at 1.
Stopped Node-RED graphical event wiring tool.
Started Node-RED graphical event wiring tool.
_tls_common.js:131
  c.context.setCert(cert);

Это произошло после того, как я успешно создал privatekey.pem и сертификат. PEM. Для создания этих файлов я использовал:

openssl genrsa -out privatekey.pem 1024

, затем использовал

openssl req -new -key privatekey.pem -out private-csr.pem

, после чего я вставил соответствующую информацию, а затем получил подтверждение "подпись в порядке" с

openssl x509 -req -days 365 -in private-csr.pem -signkey privatekey.pem -out certificate.pem

Поскольку вышеприведенное вернуло файлы privatekey.pem и certificate.pem в ls -la, я переместился на следующее:

// The `https` setting requires the `fs` module. Uncomment the 
following
// to make it available:
var fs = require("fs");
module.exports = {
// the tcp port that the Node-RED web server is listening on
uiPort: process.env.PORT || 1880,

, а также

adminAuth: {
type: "credentials",
users: [
    {
username: "admin",
password: "$2a$08$9Miva2AQEFlXQ3S7emXlIuLkLzNzi9yzgqxGYMY5dzK4FzNQa7dCu",
permissions: "*" 
    }
]
},

с загрузкой модуля fs

https: {
key: fs.readFileSync('/home/pi/.node-red/privatekey.pem'),
cert: fs.readFileSync('/home/pi/.node-red/certificate.pem')
},

После выполнения этой настройки я получаю сообщение об ошибке, указанное в начале. Обновление: я удалил содержимое .node-red / settings.js и заменил на https://github.com/node-red/node-red/blob/master/packages/node_modules/node-red/settings.js, и узел-красный запустился! Woohoo! Однако, если попытаться перенастроить файл settings.js еще раз, он столкнется с той же ошибкой. К вашему сведению, я осторожно раскомментирую строки, однако может ли проблема быть в хэш-pw, который я получаю от node-red-admin? Потому что, когда я пытаюсь установить node-red-admin с помощью «npm install -g node-red-admin» после входа в систему как root с помощью «su», возникает следующее:

pi@padrejuan:~ $ su
Password: 
root@padrejuan:/home/pi# npm install -g node-red-admin
/usr/local/bin/node-red-admin -> /usr/local/lib/node_modules/node-red- 
admin/node-red-admin.js

> bcrypt@3.0.6 install /usr/local/lib/node_modules/node-red- 
admin/node_modules/bcrypt
> node-pre-gyp install --fallback-to-build

node-pre-gyp WARN Using request for node-pre-gyp https download 
node-pre-gyp WARN Pre-built binaries not installable for bcrypt@3.0.6 
and node@12.11.1 (node-v72 ABI, glibc) (falling back to source compile 
with node-gyp) 
node-pre-gyp WARN Hit error EACCES: permission denied, mkdir 
'/usr/local/lib/node_modules/node-red-admin/node_modules/bcrypt/lib' 
gyp WARN EACCES user "nobody" does not have permission to access the 
dev dir "/root/.cache/node-gyp/12.11.1"
gyp WARN EACCES attempting to reinstall using temporary dev dir 
"/usr/local/lib/node_modules/node-red-admin/node_modules/bcrypt/.node- 
gyp"
gyp WARN install got an error, rolling back install
gyp WARN install got an error, rolling back install
gyp ERR! configure error

и так

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 08 октября 2019

Проблема в том, что в последних версиях openssl теперь ключи с битовой длиной 1024 считаются небезопасными.

Повторно сгенерируйте закрытый ключ размером 2048, а затем заново создайте сертификат.

openssl genrsa -out privatekey.pem 2048
...