节点请求 - 得到错误“SSL23_GET_SERVER_HELLO:未知协议”(node-requ

2019-07-21 16:00发布

我使用的节点请求模块,定时发送GET请求URL集,有时让下面的错误一些网站上。

Error: 29472:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:openssl\ssl\s23_clnt.c:683

问题是,我不总是或总是得到这个错误的一些网址,只是有时。 此外,它不能与“忽略不计strictSSL: false ”。

我已阅读,这可以在发送了错误的协议SSL请求涉及到我(的SSLv2,SSLv3的,TLS ..)。 但是,这并不能解释为什么会发生不规则。

顺便说一句,我是一个双赢2008服务器上运行的NodeJS。

任何帮助表示赞赏。

Answer 1:

当您通过错误的端口要求HTTPS资源,如80所以请确保您指定正确的端口,443,在请求选项,你会得到这样的错误消息。



Answer 2:

这完全是我不好。

我用标准节点http.request应在其上发送请求来仅HTTP不会忽略的代码的一部分。 好像分贝有将其与随机间隔查询单个HTTPS地址。

简单地说,我试图发送一个HTTP请求到HTTPS。



Answer 3:

一些网站都是讲的SSLv2,或者至少发送的SSLv2服务器问候,和你的客户不说话,或者不配置讲,的SSLv2。 你需要在这里做一个决策。 的SSLv2应该从地球表面年前消失,并且仍然使用它的网站是不安全的。 但是,如果你必须跟他们,你就必须在你的结束,来启用它,如果你能。 如果可以的话我会投诉到网站所有者虽然。



Answer 4:

我有这个问题(403误差为每个包),我没有发现任何在互联网极大地解决这个问题。 .npmrc我的用户文件夹内的文件是错误和误解。 我改变了这种npmrc专线

proxy=http://XX.XX.XXX.XXX:XXX/

至 :

proxy = XX.XX.XXX.XXX:XXXX


Answer 5:

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


Answer 6:

我因为我用了这个错误require('https')我应该一直在使用require('http')



Answer 7:

我在连接到Amazon RDS得到这个错误。 我检查服务器状态CPU使用率的50%,而这是一个开发服务器,没有人在使用它。

这是工作之前,并没有在连接配置已更改。 重新启动服务器解决了该问题对我来说。



Answer 8:

因此,在短期,

vi ~/.proxy_info

export http_proxy=<username>:<password>@<proxy>:8080
export https_proxy=<username>:<password>@<proxy>:8080

source ~/.proxy_info

希望这可以帮助别人着急:)



Answer 9:

在我的情况(网站SSL使用EV曲线)与SSL的问题,通过加入这个选项ecdhCurve解决: 'P-521:P-384:P-256'

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

JFYI,也许这将帮助别人



Answer 10:

这听起来像你只需要有一些重试逻辑,所以间歇性错误不耽误工作。

function faultTolerantRequest (url, trys, retryTime, cb) {
  var attempts = 0;
  function requestFinished (err, res, body) {
    if (err) {
      if (attempts < trys) {
        return setTimeout(tryRequest, retryTime);
      }
      return cb(err);
    }
    return cb(err, res, body);
  }
  function tryRequest () {
    attempts++;
    return request(url, requestFinished);
  }
  return tryRequest();
}


文章来源: node-request - Getting error “SSL23_GET_SERVER_HELLO:unknown protocol”