Node.js Nodejs出错,无法验证某些证书的叶签名

Node.js Nodejs出错,无法验证某些证书的叶签名,node.js,certificate,self-signed,makecert,Node.js,Certificate,Self Signed,Makecert,我正在尝试使用nodejs,它将一些数据发送到其他服务器。Nodejs正在https上与其他服务器通信,Nodejs使用可用的根证书验证其他服务器的证书。要求节点必须拒绝未经授权的节点 我正在用一些测试服务器测试上述设置。对于一个测试服务器,我创建了一个服务器证书,并由使用openSSL的自签名CA证书“CA1.cer”签名。对于另一个测试服务器,我采用了与第一个测试服务器相同的方法,但使用了makecert实用程序 现在我已经在我的nodejs代码中包含了这两个CA证书。问题是测试服务器的no

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

我正在用一些测试服务器测试上述设置。对于一个测试服务器,我创建了一个服务器证书,并由使用openSSL的自签名CA证书“CA1.cer”签名。对于另一个测试服务器,我采用了与第一个测试服务器相同的方法,但使用了makecert实用程序

现在我已经在我的nodejs代码中包含了这两个CA证书。问题是测试服务器的nodejs失败,该服务器使用makecert实用程序创建了证书。但同样的代码也适用于测试服务器,该服务器使用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
    }
};

请帮助….

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

"rejectUnauthorized": false

问题解决了。从makecert util创建的证书不是.pem格式。一旦转换成.pem,上面的代码就可以工作了。感谢Andrei的支持。

您好,证书在浏览器中使用时有效。查找证书仅在与nodejs一起使用时失败的原因。此处描述了导致您遇到错误的SSL证书问题的内部原因:感谢您的评论。但在我的例子中,两个证书都是以类似的方式创建的,我认为不涉及任何中间CA。此外,使用OpenSSL创建的证书工作良好。我在服务器证书中看到的唯一区别是OpenSSL证书是(版本:V1,签名算法:sha1RSA,序列号:01,prublic密钥:2048位,并且没有“授权密钥标识符”字段)。Makecert证书为(版本:V3,签名算法:md5RSA,序列号:,公钥:1024位,有“授权密钥标识符”字段)