对于某些证书,Nodejs使用unable_to_verify_leaf_signature错误输出

时间:2013-11-24 13:39:49

标签: node.js certificate self-signed makecert

我正在尝试使用nodejs将一些数据发送到其他服务器。 Nodejs正在与https上的其他服务器通信,nodejs使用可用的根证书验证其他服务器的证书。要求是nodejs必须拒绝未经授权的那些。

我正在使用一些测试服务器测试上述设置。对于一个测试服务器,我创建了一个服务器证书,并使用openSSL由自签名CA证书“CA1.cer”签名。对于其他测试服务器,我跟第一个测试服务器一样,但是使用了makecert实用程序。

现在我在我的nodejs代码中包含了两个CA证书。问题是对于具有使用makecert实用程序创建的证书的测试服务器,nodejs失败。但是相同的代码适用于使用openSSL创建证书的测试服务器。

另一方面,两台服务器在浏览器上运行正常,没有任何证书错误。

我的nodejs选项如下,我的版本为v0.8.18:

var options = {
    host: host,
    port: port,
    path: pathname,
    method: 'POST',
    ca: [ fs.readFileSync('./ca1.cer'), //created using OpenSSL
          fs.readFileSync('./ca2.cer') ], // created using makecert util
    agent: false,
    requestCert: true,
    rejectUnauthorized: true,
    auth: cred,
    headers: {
        'Content-Type': 'text/xml',
        'Content-Length': xmldata.length
    }
};

请帮忙......

2 个答案:

答案 0 :(得分:0)

要允许向服务器发出无效SSL证书的请求,请添加选项:

"rejectUnauthorized": false

答案 1 :(得分:0)

问题得到解决。从makecert util创建的证书不是.pem格式。转换为.pem后,上面的代码正常工作。感谢Andrei的支持。