【问题标题】:Nodejs errors out with unable_to_verify_leaf_signature for some certificates某些证书的 Nodejs 错误并带有 unable_to_verify_leaf_signature
【发布时间】:2013-11-24 13:39:49
【问题描述】:

我正在尝试使用 nodejs,它将一些数据发送到其他服务器。 Nodejs 正在与 https 上的其他服务器通信,并且 nodejs 使用可用的根证书验证其他服务器的证书。要求是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
    }
};

请帮忙....

【问题讨论】:

    标签: node.js certificate self-signed makecert


    【解决方案1】:

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

    "rejectUnauthorized": false
    

    【讨论】:

    • 您好,证书有效,因为它与浏览器一起使用。仅在与 nodejs 一起使用时寻找证书失败的原因。
    • 这里描述了导致您遇到的错误的 SSL 证书问题的内部:blog.gaeremynck.com/fixing-unable_to_verify_leaf_signature
    • 感谢您的评论。但就我而言,这两个证书都是以类似的方式创建的,我认为不涉及任何中间 CA。此外,使用 OpenSSL 创建的证书也可以正常工作。我可以在服务器证书中看到的唯一区别是 OpenSSL 证书是(版本:V1,签名算法:sha1RSA,序列号:01,公共密钥:2048 位并且没有“授权密钥标识符”字段)。 Makecert 证书是(版本:V3,签名算法:md5RSA,序列号:,公钥:1024 位并且有“Authority Key Identifier”字段)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-16
      • 2020-06-25
      • 2017-12-18
      • 2020-09-01
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 2018-03-26
      相关资源
      最近更新 更多