使用TLS 1.0连接到IIS6服务器时,套接字挂起在TLSSocket.onHangUp

时间:2017-03-02 02:20:19

标签: node.js request iis-6 axios

这发生在v4-v7的各种节点版本中,也发生在AxiosJS和RequestJS中。

典型错误消息:

{ Error: socket hang up
    at TLSSocket.onHangUp
...
  code: 'ECONNRESET',

1 个答案:

答案 0 :(得分:4)

原来它是IIS6使用(现在)过时的ssl协议,NodeJS的开发人员认为不安全被列为默认ciphers

The connection to this site uses an obsolete protocol (TLS 1.0), andobsolete key exchange (RSA), and an obsolete cipher (3DES_EDE_CBC with HMAC-SHA1).

修复/绕过此

在NodeJS中,将ciphers: 'DES-CBC3-SHA'添加到请求选项。

在Axios中,在下面添加请求选项,

httpsAgent: new https.Agent({
 ciphers: 'DES-CBC3-SHA'
})

在请求中,将以下内容添加到请求选项

agentOptions: {
  ciphers: 'DES-CBC3-SHA'
}

详见:
https://github.com/nodejs/node/issues/10900#issuecomment-273834289
https://github.com/nodejs/node/issues/9845#issuecomment-264032107