gpt4 book ai didi

node.js - 连接到旧 API 时出现 "tls_process_ske_dhe:dh key too small"错误

转载 作者:行者123 更新时间:2023-12-04 22:35:35 28 4
gpt4 key购买 nike

我正在尝试使用 Node 连接到旧 API(运行 Java 6),但我被 SSL 握手阻止了。

完整错误如下所示:Error: 65756:error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small:openssl\ssl\statem\statem_clnt.c:1472:

我尝试了很多不同的方法来解决这个问题,但没有一个能让我更接近。这是我运行的测试脚本,以避免必须拉动整个集成:

const tls = require('tls');

tls.connect({
host: 'old.api.com',
port: 8443,
//ciphers: suiteFromNmap,
//secureProtocol: 'TLSv1_method',
//minDHSize: 768,
}, function(result) {
console.log(result);
}).on('error', function(err) {
console.log(err);
});

我试过使用 ciphers 参数,但无论我使用哪个套件都没有任何区别,有时会因为找不到通用密码而出现不同的错误。

我用 nmap 做了一些挖掘,导致了这个:

PORT     STATE SERVICE
8443/tcp open https-alt
| ssl-enum-ciphers:
| TLSv1.0:
| ciphers:
| TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA - E
| TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA (dh 768) - E
| TLS_DHE_RSA_WITH_AES_128_CBC_SHA (dh 768) - C
| TLS_DHE_RSA_WITH_AES_256_CBC_SHA (dh 768) - B
| TLS_DHE_RSA_WITH_DES_CBC_SHA (dh 768) - E
| TLS_RSA_EXPORT_WITH_DES40_CBC_SHA - E
| TLS_RSA_EXPORT_WITH_RC4_40_MD5 - E
| TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
| TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
| TLS_RSA_WITH_DES_CBC_SHA (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_MD5 (rsa 2048) - C
| TLS_RSA_WITH_RC4_128_SHA (rsa 2048) - C
| compressors:
| NULL
| cipher preference: client
| warnings:
| 64-bit block cipher 3DES vulnerable to SWEET32 attack
| 64-bit block cipher DES vulnerable to SWEET32 attack
| 64-bit block cipher DES40 vulnerable to SWEET32 attack
| Broken cipher RC4 is deprecated by RFC 7465
| Ciphersuite uses MD5 for message integrity
| Key exchange (dh 768) of lower strength than certificate key
|_ least strength: E

我尝试更改 minDHSize 参数以匹配警告中指出的参数,但错误保持不变。

尝试使用在线 SSL 检查 (https://www.ssllabs.com/ssltest/) 并得到了这个: ssllabs test result

尝试了这些密码,但仍然是同样的错误。

ssllabs.com 似乎对他们的证书很满意,但没有 --no-check-certificate wget 失败:

ERROR: The certificate of ‘old.api.com’ is not trusted.
ERROR: The certificate of ‘old.api.com’ hasn't got a known issuer.

在这一点上,我不确定我还能尝试什么,我这边有没有什么可以让 Node 连接到这个服务器?考虑到没有真正重要或私有(private)的事情发生,我愿意选择它的低安全版本,只要我不必使整个 Node 实例不安全。

最佳答案

尝试在/etc/ssl/openssl.cnf中将CipherString设置低一些

    [ default_conf ]

ssl_conf = ssl_sect

[ssl_sect]

system_default = ssl_default_sect

[ssl_default_sect]
MinProtocol = TLSv1.2
CipherString = DEFAULT:@SECLEVEL=1

关于node.js - 连接到旧 API 时出现 "tls_process_ske_dhe:dh key too small"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56445859/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com