从nodejs通过https连接到远程服务器时出错?

时间:2015-07-23 18:53:18

标签: node.js ssl

我知道已经对这样的问题做出了回应,但直到现在这些解决方案对我来说还不起作用。

我有一个像代理一样工作的nodejs服务器。我需要通过https连接到服务器。我使用节点的https模块,具有以下选项:

var openidmConnection = {
  hostname: 'remoteserver',
  port: 8443,
  path: 'path/to/resource',
  method: 'GET',
  headers: headersObject,
  key: private_pem_key,
  requestCert: connectionOptions.requestCert,
  rejectUnauthorized: false,
  agent: false,
  secureProtocol: 'SSLv3_method',
  secureOptions: 'SSL_OP_NO_SSLv3|SSL_OP_NO_SSLv2',
}

当我使用postman测试我的本地节点服务器进行此调用时,我出错了:

EPROTO 140482007910272:error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number

我搜索过,我发现SSL3_GET_RECORD:wrong version number的错误可能是因为我试图连接到错误的端口,或者主机不支持https,或者使用http模块而不是https。这些都不适用于我,因为我验证了主机支持https,端口是8443,模块是https。我正在使用节点0.12.6

1 个答案:

答案 0 :(得分:0)

您正在强制使用SSLv3,并且远程方不支持它。考虑到SSLv3(和SSLv2)的安全问题,这并不奇怪。请尝试设置secureProtocol: 'TLSv1_method'以强制使用TLSv1。

您也可以删除requestCert,因为这是服务器端选项。