SSL:错误:0B080074:x509证书例程:X509_CHECK_PRIVATE_KEY:密钥值不匹配

dsekswqp  于 2022-09-20  发布在  Nginx
关注(0)|答案(17)|浏览(1152)

我无法设置SSL。我在谷歌上搜索了一下,找到了一些解决方案,但没有一个对我管用。请帮我个忙。

以下是我尝试重新启动nginx时收到的错误:

root@s17925268:~# service nginx restart
Restarting nginx: nginx: [emerg] SSL_CTX_use_PrivateKey_file("/etc/nginx/conf.d/ssl/ssl.key") failed (SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)
nginx: configuration file /etc/nginx/nginx.conf test failed

我的证书来自StartSSL,有效期为1年。

以下是我的测试结果:

  • 证书和私钥没有尾随空格。
  • 我没有使用默认的Server.key文件。
  • 我检查了nginx.conf,指令指向正确的私钥和证书。

我还检查了模数,我得到了密钥和证书的不同模数。

谢谢你的帮助。:)

7uzetpgm

7uzetpgm1#

一旦你确定它们不匹配,你仍然有一个问题--如何处理它。通常,证书可能只是不正确地组装。当CA签署您的证书时,他们会向您发送如下所示的阻止

-----BEGIN CERTIFICATE-----
MIIAA-and-a-buncha-nonsense-that-is-your-certificate
-and-a-buncha-nonsense-that-is-your-certificate-and-
a-buncha-nonsense-that-is-your-certificate-and-a-bun
cha-nonsense-that-is-your-certificate-and-a-buncha-n
onsense-that-is-your-certificate-AA+
-----END CERTIFICATE-----

他们还会向您发送一个捆绑包(通常是两个证书),代表他们向您授予证书的权限。这将看起来类似于

-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-your-request
-this-is-the-certificate-that-signed-your-request-this
-is-the-certificate-that-signed-your-request-this-is-t
he-certificate-that-signed-your-request-this-is-the-ce
rtificate-that-signed-your-request-A
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIICC-this-is-the-certificate-that-signed-for-that-one
-this-is-the-certificate-that-signed-for-that-one-this
-is-the-certificate-that-signed-for-that-one-this-is-t
he-certificate-that-signed-for-that-one-this-is-the-ce
rtificate-that-signed-for-that-one-this-is-the-certifi
cate-that-signed-for-that-one-AA
-----END CERTIFICATE-----

除了不幸的是,它们不会被如此清晰地贴上标签。

因此,一种常见的做法是将所有这些都捆绑到一个文件中--您的证书,然后是签名证书。但由于它们不容易区分,有时会发生有人不小心将它们按其他顺序排列--先签署证书,然后是最终证书--而没有注意到的情况。在这种情况下,您的证书将与您的密钥不匹配。

您可以通过运行以下命令进行测试,以查看证书认为它代表什么

openssl x509 -noout -text -in yourcert.cert

在顶部附近,您应该看到“Subject:”,然后是看起来像您的数据的内容。如果它看起来像您的CA,则您的捆绑包可能顺序错误;您可以尝试创建备份,然后将最后一个证书移到开头,希望这就是您的证书。

如果这不起作用,你可能只需要重新颁发证书。当我创建CSR时,我喜欢清楚地标记它用于哪个服务器(而不仅仅是ssl.key或Server.key),并在名称中包含日期的副本,如mydomain.20150306.key等,这样它们的私钥和公钥对不太可能与另一组密钥混淆。

ibps3vxo

ibps3vxo2#

1.确保您的证书和密钥为PEM格式。如果不是,则使用openssl命令进行转换
1.检查公钥的MD5散列,以确保它与私钥中的内容匹配

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privateKey.key | openssl md5
jobtbby3

jobtbby33#

我遇到这个问题是因为我以错误的顺序添加了包和证书,所以这可能会对其他人有所帮助。

之前(这是错误的):

cat ca_bundle.crt certificate.crt > bundle_chained.crt

之后(这是正确的)

cat certificate.crt ca_bundle.crt > bundle_chained.crt

请不要忘记更新适当的配置文件(现在SSLCERTIFICATE必须指向链接的CRT)为

server {
    listen              443 ssl;
    server_name         www.example.com;
    ssl_certificate     bundle_chained.crt;
    ssl_certificate_key www.example.com.key;
    ...
}

nginx manpage

如果服务器证书和捆绑包以错误的顺序连接,nginx将无法启动,并显示错误消息:

SSL_CTX_use_PrivateKey_file(" ... /www.example.com.key") failed
   (SSL: error:0B080074:x509 certificate routines:
    X509_check_private_key:key values mismatch)
zu0ti5jz

zu0ti5jz4#

我得到了一个MD5散列,密钥和证书的结果不同。

这说明了一切。您的密钥和证书不匹配。

模数应该匹配。确保你有正确的钥匙。

o2gm4chl

o2gm4chl5#

如果发生这种情况,并且您使用的是We‘s Encrypt/certbot,原因很可能是您使用的是chain.pem而不是fullchain.pem

应该是这样的:

ssl_certificate /etc/certbot/live/example.com/fullchain.pem;
ssl_certificate_key /etc/certbot/live/example.com/privkey.pem;

请参阅certbot文档“我的证书在哪里?”

l7mqbcuq

l7mqbcuq6#

我也有同样的问题,最后通过更改证书文件中pem块的顺序解决了它。

证书块应该放在文件的开头,然后是中间块,然后是根块。

我通过比较有问题的证书文件和正常工作的证书文件来认识到这个问题。

u7up0aaq

u7up0aaq7#

我在Nginx上也遇到了同样的问题,但下面的帮助我解决了这个问题。

我已经删除了捆绑包,并用CRT文件更新了它。

ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/key.key;

该捆绑包不是100%必需的,但它提高了兼容性。

kadbb459

kadbb4598#

我对这个问题的5点看法是:

我也有同样的问题。看了大约一个小时后,我发现我把证书贴错了。

如果您遇到这样的错误,请查看您的证书。

xxe27gdn

xxe27gdn9#

在我的例子中,我想要更改SSL证书,因为我已经更改了服务器,所以我必须使用以下命令创建一个新的CSR:

openssl req -new -newkey rsa:2048 -nodes -keyout mysite.key -out mysite.csr

我已经将mysite.csr文件发送给公司的SSL提供商,在我收到证书CRT之后,我重新启动了nginx,我收到了这个错误

(SSL: error:0B080074:x509 certificate routines:X509_check_private_key:key values mismatch)

经过大量调查,发现KEY文件中的模块与CRT文件中的模块不一致

因此,为了使其正常工作,我创建了一个新的CSR文件,但我必须使用以下命令更改文件的名称

openssl req -new -newkey rsa:2048 -nodes -keyout mysite_new.key -out mysite_new.csr

然后,我从公司供应商那里收到了一个新的CRT文件,重新启动nginx,它起作用了。

n3h0vuf2

n3h0vuf210#

当您的CA颁发中间证书时也会发生这种情况

我在nginx上遇到了这个问题(两次),这篇文章中的解决方案都没有解释这个问题。一位名叫Marco的善良绅士在这里发表的博客文章就是这样写的,我把它贴在这里,给那些遇到我所看到的东西的人。https://medium.com/@mrkdsgn/steps-to-install-a-go-daddy-ssl-certificate-on-nginx-on-ubuntu-14-04-ff942b9fd7ff

在我的例子中,Go-Papy是CA,这是特定于他们如何发布证书和中间证书捆绑包的。

以下是Marco的博客文章节选

使用Nginx时,如果您的CA包含中间证书,则必须创建一个包含您的证书和CA的中间证书的单链证书文件。

您可以使用此命令创建一个名为example.com.chained.crt的组合文件:

cat example.com.crt intermediate.crt > example.com.chained.crt

xe55xuns

xe55xuns11#

在我的情况下,问题是我在CLI界面中没有输入任何数据就创建了服务器。当我重生克氏物并改变所有领域:城市、州等时,一切都变好了。

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
k10s72fa

k10s72fa12#

当我将bundle.crt和Main证书组合在一起时,就发生了这种情况。原因是我复制了bundle.crt下面的主证书。应该是相反的情况

1/主证书2/bundle.crt

bq9c1y66

bq9c1y6613#

对于Nginx:

1.openssl req -newkey rsa:2048 -nodes -keyout domain.com.key -out domain.com.csr
1.SSL文件domain_com.crtdomain_com.ca-bundle文件,然后将新文件复制到粘贴domain.com.chained.crt中。

3:添加nginx文件:

1.ssl_certificate /home/user/domain_ssl/domain.com.chained.crt;
1.ssl_certificate_key /home/user/domain_ssl/domain.com.key;

Lates重启Nginx。

rslzwgfq

rslzwgfq14#

SL_CTX_USE_PrivateKey(“/etc/nginx/ssl/file”)失败(SSL:Error:0B080074:x509证书例程:X509_CHECK_PRIVATE_KEY:密钥值不匹配)

当证书私钥(ssl_certificate_key,例如.key.pem文件)与您的Nginx配置(检查nginx.confsites-enabled/中的)中的公共证书文件(ssl_certificate)不匹配时,可能会发生此错误。确保两个文件匹配。

有关更多详细信息,请查看Nginx错误日志(例如/var/log/nginx/error.log)。

wwodge7n

wwodge7n15#

在我的情况下,我必须连接我的域的证书。

cat myDomain.crt EntityCertCA.crt TrustedRoot.crt > bundle.crt

并在配置文件/etc/nginx/nginx.conf中

ssl_certificate "/etc/pki/nginx/bundle.crt";

重新启动服务,一切正常。

systemctl restart nginx.service

来源步骤2:https://www.namecheap.com/support/knowledgebase/article.aspx/9781/2238/nginx-ssl-error0b080074x509-certificate-routines-x509checkprivatekeykey-values-mismatch

相关问题