捆绑的 SSL 证书 Public 密钥与私钥 Public 密钥不匹配
Bundled SSL Certificate Public Key does not match Private Key Public Key
我正在尝试将新的 SSL 证书安装到 Traefik 中。我的证书由第三方 (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
在线研究,我发现这些命令可以验证 public keys/modulus 证书和私钥
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
我在这里绞尽脑汁,我错过了什么???
你的链错了。您需要反转它并删除根 CA 证书。
服务器认为根 CA 是主证书,它正在尝试根据根 CA 证书加载私钥,这就是您看到消息的原因。
也不需要根 CA,因为它应该始终在客户端 CA 列表中,因此您将 CA 证书发送给客户端,客户端将忽略它。
即
-----BEGIN CERTIFICATE-----
[[SNIP - MyServer Cert]]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[[SNIP - Intermediate CA]]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[[SNIP - Intermediate CA]]
-----END CERTIFICATE-----
我正在尝试将新的 SSL 证书安装到 Traefik 中。我的证书由第三方 (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
在线研究,我发现这些命令可以验证 public keys/modulus 证书和私钥
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
我在这里绞尽脑汁,我错过了什么???
你的链错了。您需要反转它并删除根 CA 证书。
服务器认为根 CA 是主证书,它正在尝试根据根 CA 证书加载私钥,这就是您看到消息的原因。
也不需要根 CA,因为它应该始终在客户端 CA 列表中,因此您将 CA 证书发送给客户端,客户端将忽略它。
即
-----BEGIN CERTIFICATE-----
[[SNIP - MyServer Cert]]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[[SNIP - Intermediate CA]]
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
[[SNIP - Intermediate CA]]
-----END CERTIFICATE-----