Nodejs clientCertEngine - PullRequest
       4

Nodejs clientCertEngine

0 голосов
/ 20 ноября 2018

Node.js Версия: 11.2.0

ОС: debian

Область (установка, код, время выполнения, мета и т. Д.): Проблема с отсутствием метода сертификата клиента в tlshandshake

Модуль (и версия) (при необходимости): узел openssl tls clientCertEngine

Возникли проблемы с этим при попытке использовать аппаратный модуль безопасности, который хранит закрытый ключ.(не читаемый / не экспортируемый)

Без HSM проблем нет.Может быть, я неправильно вызываю clientCertEngine?Или есть проблема, не позволяющая нам ввести -keyform e?

, хотя использование s_client работает следующим образом:

openssl s_client -host myHost.com -port 3000 -key fake.key -cert device.crt -CAfile ca.crt -engine hsm_engine -keyform e

При работе клиентского узла tls connect:

_tls_common.js:204 c.context.setClientCertEngine(options.clientCertEngine);

Error: error:1412214B:SSL routines:SSL_CTX_set_client_cert_engine:no client cert method
    at Object.createSecureContext (_tls_common.js:204:17)
    at Object.connect (_tls_wrap.js:1205:48)
    at Object. (/home/pi/test/tls.js:20:19)
    at Module._compile (internal/modules/cjs/loader.js:722:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:733:10)
    at Module.load (internal/modules/cjs/loader.js:620:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:560:12)
    at Function.Module._load (internal/modules/cjs/loader.js:552:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:775:12)
    at startup (internal/bootstrap/node.js:300:19)

И код JS

const tls = require('tls');
const fs = require('fs');
const options = { // key: null //cannot be exported nor read. Ive tried with both null and removed key entirely
cert: fs.readFileSync('client.crt'),
clientCertEngine: '/path/to/hsm/.so file',
ca: [fs.readFileSync('ca.crt')], };
const socket =tls.connect({
    host: 'myHost.com',
    port: 3000 },
    options, () => { console.log('client connected', socket.authorized ? 'authorized' : 'unauthorized');
    process.stdin.pipe(socket);
    process.stdin.resume(); });
socket.setEncoding('utf8');
socket.on('data', (data) => { console.log(data); }); socket.on('end', () => { console.log('server ends connection'); });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...