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

时间:2013-03-14 22:02:37

标签: node.js ssl request

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

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

问题是我总是或者总是在某些URL上得到此错误,有时候。此外,“strictSSL: false”无法忽略它。

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

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

感谢任何帮助。

10 个答案:

答案 0 :(得分:105)

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

答案 1 :(得分:14)

这完全是我的坏事。

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

简单地说,我正在尝试向https发送http请求。

答案 2 :(得分:4)

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

答案 3 :(得分:3)

我遇到了这个问题(每个软件包有403个错误),我在网上找不到任何解决方案。 我的用户文件夹中的bounds.extend(coords); map.fitbounds(bounds)文件错误且被误解。 我从

更改了这个npmrc行
.npmrc

到:

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

答案 4 :(得分:2)

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

答案 5 :(得分:2)

我收到此错误是因为我使用require('https')我应该使用require('http')

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

简而言之,

vi ~/.proxy_info

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

source ~/.proxy_info

希望这对某人有所帮助:)

答案 8 :(得分:0)

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

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

JFYI,也许这会帮助某人

答案 9 :(得分:0)

我在火箭聊天室中使用它通过企业代理与gitlab通信时遇到了这个错误,

因为使用的是https://:8080,但实际上它适用于http://:8080