【问题标题】:node.js : Error: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatchnode.js:错误:错误:0B080074:x509 证书例程:X509_check_private_key:键值不匹配
【发布时间】:2019-12-24 01:24:56
【问题描述】:

我有我的 ipn paypal my-prvkey.pem , my-pubcert.pem

这样就没有问题了

var httpsOptions = {
    key: fs.readFileSync('./app/certsandkeys/my-prvkey.pem'),
    cert: fs.readFileSync('./app/certsandkeys/my-pubcert.pem'),

    requestCert: true


}

但是在我将我的站点证书和由 openssl 创建的密钥添加到我的代码之后

var httpsOptions = {
    key: [fs.readFileSync('./app/certsandkeys/my-prvkey.pem'),fs.readFileSync('./app/certsandkeys/ssl/server.key')],
    cert: [fs.readFileSync('./app/certsandkeys/my-pubcert.pem'),fs.readFileSync('./app/certsandkeys/ssl/server.crt')],

    requestCert: true


}

现在我得到这个错误,我不知道为什么

错误:错误:0B080074:x509 证书例程:X509_check_private_key:key values mismatch

【问题讨论】:

  • 我不知道node.js是如何设置密钥的,但是错误显示在X509_check_private_key中,它表明传递给它的公钥和私钥不一致,即它们没有相同的模数和指数
  • 您是否尝试过检查证书格式? openssl rsa -noout -text -in my-prvkey.pem openssl x509 -noout -text -in my-pubcert.pem!它的私钥可能是 rsa,服务器证书是 x509 格式

标签: node.js express ssl https openssl


【解决方案1】:

来自docs for options.key

使用不同算法的多个键可以作为 未加密的密钥字符串数组或...

tests 使用 RSA 和椭圆曲线。您几乎可以肯定拥有并想要两个相同的算法密钥,它不会帮助您使用不同的算法,因为您无法知道客户最终会协商什么.

my answer for your other question 一样,如果您希望不同的客户端获得不同的密钥/链,那么您可以使用 SNI 在域名上执行此操作,并在 URL 中为客户端提供各自的主机。没有办法让客户端检查两条链,然后告诉您的服务器使用哪个密钥。

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 2016-05-16
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-30
    • 2012-04-09
    • 1970-01-01
    相关资源
    最近更新 更多