我已经在我的CentOS 6.8表单二进制包中安装了nodejs(最新的v.7.xx)。 我正尝试连接到使用相当旧的TSLv1encryption协议的站点。 在与该域的握手(我使用https模块)NodeJS失败,并出现以下错误消息:
Error: write EPROTO 140078368692000:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error:../deps/openssl/openssl/ssl/s23_clnt.c:769: at exports._errnoException (util.js:1033:11) at WriteWrap.afterWrite [as oncomplete] (net.js:816:14)
而当我添加secureProtocol选项(将其设置为TLSv1_method)时,我得到:
write EPROTO 140528424298272:error:14094438:SSL routines:ssl3_read_bytes:tlsv1 alert internal error:../deps/openssl/openssl/ssl/s3_pkt.c:1493:SSL alert number 80 140528424298272:error:1409E0E5:SSL routines:ssl3_write_bytes:ssl handshake failure:../deps/openssl/openssl/ssl/s3_pkt.c:659:
OpenSSL版本(就像二进制包一样)在我的机器上目前有版本:
OpenSSL 1.0.1e-fips 11 Feb 2013
据我所知,NodeJS使用它自己的二进制包,所以升级不会帮助(如果可能,我想避免这种情况)。
我已经检查了OpenSSL的更新日志,似乎没有任何问题影响到OpenSSL的特定版本(我是握手问题)。