捆绑的SSL证书公钥与私钥公钥不匹配

时间:2020-04-01 14:10:41

标签: ssl https openssl ssl-certificate traefik

我正在尝试在Traefik中安装新的SSL证书。我的证书是由第三方(Setigo)签名的,并随链一起提供给我:

-----BEGIN CERTIFICATE-----
[[SNIP - Root CA]]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[[SNIP - Intermediate CA]]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[[SNIP - Intermediate CA]]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[[SNIP - MyServer Cert]]
-----END CERTIFICATE-----

链中的最后一个证书与单个证书匹配。当我将该证书和对应密钥传递给Traefik时,出现以下错误:

failed to load X509 key pair: tls: private key does not match public key

在网上搜索时,我发现这些命令可以验证证书和私钥的公钥/模数

openssl rsa -modulus -noout -in myserver.key | openssl md5

openssl x509 -modulus -noout -in myserver.crt | openssl md5

当我针对链接的证书运行此命令时,结果不匹配。当我针对单个证书运行它时,它就会匹配。

我不能使用单个证书,因为它不是由受信任的根签名的,因此在使用OpenSSL s_client时出现以下错误:

openssl s_client -connect myserver:443 -showcerts
verify error:num=20:unable to get local issuer certificate
verify error:num=21:unable to verify the first certificate

我在这里扭动我的大脑,我想念什么?

1 个答案:

答案 0 :(得分:1)

您的链条有误。您需要将其撤消并删除根CA证书。

服务器认为根CA是主要证书,并且正在尝试针对根ca证书加载私钥,这就是为什么您看到此消息的原因。

此外,也不需要根CA,因为它应该始终在客户端CA列表中,因此您要将CA证书发送给客户端,客户端将忽略它。

C:\Users\alex\AppData\Local\Temp