node-request - 获取错误“SSL23_GET_SERVER_HELLO:未知协议”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了node-request - 获取错误“SSL23_GET_SERVER_HELLO:未知协议”相关的知识,希望对你有一定的参考价值。

我正在使用node-request模块,定期向一组URL发送GET请求,有时在某些网站上收到以下错误。

Error: 29472:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:opensslssls23_clnt.c:683

问题是我总是或总是在某些URL上得到此错误,有时候。此外,“strictSSL: false”也不容忽视。

我已经读过这可能与我使用错误的协议(SSLv2,SSLv3,TLS ..)发送SSL请求有关。但这并不能解释为什么它会不规则地发生。

顺便说一句,我在Win 2008服务器上运行nodejs。

任何帮助表示赞赏。

答案

当您通过错误的端口(例如80)请求HTTPS资源时,您将收到此类错误消息。因此,请确保在“请求”选项中指定了正确的端口443。

另一答案

听起来你只需要有一些重试逻辑,所以间歇性错误不会让你失望。

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();
}
另一答案

这完全是我的坏事。

我在代码的一部分上使用标准节点http.request,该代码应该仅向http地址发送请求。似乎db有一个https地址,该地址以随机间隔查询。

简单地说,我试图向https发送http请求。

另一答案

有些网站正在讲SSLv2,或者至少发送SSLv2服务器问候,并且您的客户端没有说话,或者没有配置说SSLv2。您需要在此做出政策决定。几年前,SSLv2应该已经从地球上消失了,仍然使用它的网站是不安全的。但是,如果你要与他们交谈,你只需要在你的最后启用它,如果可以的话。如果可以,我会向网站所有者投​​诉。

另一答案

我有这个问题(每个包403错误),我发现在互联网上没有什么好解决它。我的用户文件夹中的.npmrc文件是错误的并且被误解了。我更改了这个npmrc行

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

至 :

proxy = XX.XX.XXX.XXX:XXXX
另一答案
var https = require('https');
https.globalAgent.options.secureProtocol = 'SSLv3_method';
另一答案

我得到了这个错误,因为我使用require('https')我应该使用require('http')

另一答案

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

它之前正在工作,连接配置中没有任何内容发生变化。重新启动服务器为我解决了问题。

另一答案

所以简而言之,

vi ~/.proxy_info

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

source ~/.proxy_info

希望这可以帮助别人赶时间:)

另一答案

在我的情况下(网站SSL使用ev曲线)SSL的问题通过添加此选项ecdhCurve解决:'P-521:P-384:P-256'

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

JFYI,也许这会帮助别人

以上是关于node-request - 获取错误“SSL23_GET_SERVER_HELLO:未知协议”的主要内容,如果未能解决你的问题,请参考以下文章

使用 node-request 和 fs Promisified 下载图像,在 Node.js 中没有管道

无法解决此错误:错误:14077458:SSL 例程:SSL23_GET_SERVER_HELLO:reason(1112) - 关于尝试啥的任何想法?

错误:错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败

cURL 错误 (35):错误:14077458:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 无法识别的名称

贝宝错误:14077410:SSL 例程:SSL23_GET_SERVER_HELLO:sslv3 警报握手失败在 laravel

curl:(35)错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败