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

socket hang up at TLSSocket.onHangUp when connecting to IIS6 server with TLS 1.0

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

典型错误信息:

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

原来是 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).

给fix/bypass这个

在 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