簡體   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