gpt4 book ai didi

node.js - 允许对 NodeJ 进行遗留重新协商

转载 作者:行者123 更新时间:2023-12-05 04:21:03 26 4
gpt4 key购买 nike

解决此问题的最佳方法是更新我尝试连接的 SSL 端点,但我也没有这个能力。

我正在尝试为几乎没有维护的应用程序访问 SOAP 端点(这很痛苦),因此可能无法获得正确的 SSL 补丁。

它位于执行主动 SSL 重写的代理后面,也可能是错误的原因:


var request = require("request")
var soap = require("soap")
const fs = require('fs')

var specialRequest = request.defaults({
ca: fs.readFileSync("rewrite-example.pem")
})

var options = { request: specialRequest }

const WSDL = "https://SSL-rewrite.example?wsdl"

soap.createClient(WSDL, options, function(err, client) {
if(err) throw Error(err)
})

错误:

Uncaught TypeError: req.then is not a function
at HttpClient.request (../node_modules/soap/lib/http.js:191:13)
at Object.open_wsdl (../node_modules/soap/lib/wsdl/index.js:1271:20)
at openWsdl (../node_modules/soap/lib/soap.js:70:16)
at ../node_modules/soap/lib/soap.js:48:13
at _requestWSDL (../node_modules/soap/lib/soap.js:76:9)
at Object.createClient (../node_modules/soap/lib/soap.js:94:5)
> Uncaught: Error: write EPROTO C017726B8C7F0000:error:0A000152:SSL routines:final_renegotiate:unsafe legacy renegotiation disabled:../deps/openssl/openssl/ssl/statem/extensions.c:908

根据我的发现here ,可以创建自定义 OpenSSL 配置文件,允许不安全的旧版重新协商。并使用 Node 的 --openssl-config标志,应该可以“忽略”重新谈判。我试过编写一个自定义配置文件,如第一个链接中所写,并将其传递进去,但无济于事。

这个问题有人问过before ,尽管恢复到旧版本的 Node 并不理想。

还有什么其他办法可以解决这个问题?

最佳答案

您已经发现此错误来自 CVE-2009-3555,这是 IIS 问题,因此即使使用 Node 标志也不会忽略它。从 Node 17 或 18 开始,他们删除了 OpenSSL 选项以接受旧版服务器。

在你的情况下,我认为更好的解决方案是通过 httpsAgent 选项。soap.js 自 v0.40.0 开始使用 Axios根据自述文件,您应该像这样设置请求参数:

const crypto = require('crypto')

const options = {
request: axios.create({
// axios options
httpsAgent: new https.Agent({
// for self signed you could also add
// rejectUnauthorized: false,

// allow legacy server
secureOptions: crypto.constants.SSL_OP_LEGACY_SERVER_CONNECT,
}),
}),
}

https.Agent 的 secureOptions 是 SSL_OP_* 选项的数字位掩码。

关于node.js - 允许对 NodeJ 进行遗留重新协商,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74324019/

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