我知道已经对这样的问题做出了回应,但直到现在这些解决方案对我来说还不起作用。
我有一个像代理一样工作的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
答案 0 :(得分:0)
您正在强制使用SSLv3,并且远程方不支持它。考虑到SSLv3(和SSLv2)的安全问题,这并不奇怪。请尝试设置secureProtocol: 'TLSv1_method'
以强制使用TLSv1。
您也可以删除requestCert
,因为这是服务器端选项。