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警报握手失败