繁体   English   中英

在 Node JS TLS 中添加/启用从 SSLv3 (DHE-RSA-AES256-SHA) 到 TLS 1.2 的密码

[英]Add/Enable cipher from SSLv3 (DHE-RSA-AES256-SHA) to TLS 1.2 in Node JS TLS

我有一个我无法控制的医疗设备(客户端)。 当该设备(客户端)上发生事件时,它会通过 tls v1.2 连接到我的服务器以传递数据。 我的错误是“没有共享密码”。

[错误:3160:错误:1417A0C1:SSL 例程:tls_post_process_client_hello:无共享密码:openssl\\ssl\\statem\\statem_srvr.c:1419:]

经过长时间的调查,node js 10.9.0 似乎不支持客户端密码套件。 我试图覆盖默认密码(DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA。请参阅下面的代码)并且考虑了更改,因为我尝试与 openssl s_client 连接并失败,因为它不支持密码。 如果我将密码设置为 ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA openssl s_client 连接。 如果我在列表中使用 openssl ciphers -sslv3,我会看到 DHE-RSA-AES128-SHA 和 DHE-RSA-AES256-SHA。 但是客户端没有连接。

连接握手Wireshark TLS 协商

我的服务器代码:

 const tls = require('tls'); const fs = require('fs'); tls.DEFAULT_CIPHERS = 'DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA'; const options = { key: fs.readFileSync(__dirname + '\\\\cert\\\\private-key.pem'), cert: fs.readFileSync(__dirname + '\\\\cert\\\\cert.pem'), rejectUnauthorized: false }; const server = tls.createServer(options, (socket) => { console.log('server connected', socket.authorized ? 'authorized' : 'unauthorized'); socket.write('welcome!\\n'); socket.setEncoding('utf8'); socket.pipe(socket); }); server.on('tlsClientError', (error, tlsSocket) => { console.log(error); }); server.listen(8081, () => { console.log('server bound', 8011); });

OpenSSL s_client

密码 ECDHE-RSA-AES256-SHA384:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA openssl 支持的密码

密码 DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA openssl 不支持的密码

如何添加或解决这个旧密码?

编辑新回复: 握手通行证

** 新选项 **

const options = {
key: fs.readFileSync(__dirname + '/cert/sentinel-private-key.pem'),
cert: fs.readFileSync(__dirname + '/cert/sentinel-cert.pem'),
dhparam: fs.readFileSync(__dirname + '/cert/dhparams.pem'),
ca:  [fs.readFileSync(__dirname + '/cert/ca-cert.ca')],
rejectUnauthorized: false

客户端要求您的服务器使用基于 DHE 的密码套件支持完美的前向保密。 为了实现这一点,您需要使用适当的 DH 参数配置您的服务器。

首先,您必须生成参数,例如:

 openssl dhparam -out dhparams.pem 2048

接下来,您需要配置您的应用程序以使用它们。 在 Nodes.js 中执行此操作的说明可在此处获得:

https://nodejs.org/docs/latest-v10.x/api/tls.html#tls_perfect_forward_secrecy

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM