nodejs中的SSL错误

时间:2012-06-18 22:26:02

标签: node.js ssl request

我正在尝试通过节点https.request()获取网页。这样做会导致我的代码记录错误。使用节点请求模块具有相同的结果:

请求问题:140398870042432:错误:140773F2:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警告意外消息:s23_clnt.c:658:

以下表示正在使用错误的SSL版本,但我找不到更改版本的方法:curl error: "sslv3 alert unexpected message"。使用我的终端中的curl会返回响应,就像在我的浏览器中点击URL一样(它是一个登录页面)。我的代码如下。

var request = require('request')
request.get("https://icmserver.wit.ie/balance", function(err, res, body) {
    if (err) {
        return console.log(err)
    }
    return body;
});

有谁知道这里会发生什么?

3 个答案:

答案 0 :(得分:13)

尝试在您提出的请求中使用options = { secureProtocol: 'SSLv3_method' }

答案 1 :(得分:12)

我们遇到了同样的问题。默认情况下,request使用https.globalAgent。所以我们在脚本顶部附近添加了代码。

var https = require('https');
https.globalAgent.options.secureProtocol = 'SSLv3_method';

突然间一切正常。

答案 2 :(得分:0)

如果网站使用ECDH曲线,对我来说,仅通过添加以下选项即可解决该问题:

request({ url, agentOptions: {
            ecdhCurve: 'P-521:P-384:P-256',
},(err,res,body) => {

JFYI,也许这会帮助某人。