Связанный сертификат SSL Publi c Ключ не соответствует Закрытый ключ Publi c Ключ - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь установить новый сертификат SSL в Traefik. Мой сертификат подписан третьей стороной (Сети go), и мне была предоставлена ​​цепочка:

-----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

При онлайн-исследовании я обнаружил эти команды, чтобы проверить публичные c ключи / модуль для сертификата и секретного ключа.

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

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

Когда я запускаю это для цепочки сертификатов, результаты не совпадают. Когда я запускаю его против отдельного сертификата, он совпадает.

Я не могу использовать отдельный сертификат, так как он не подписан доверенным root, поэтому я получаю следующую ошибку при использовании 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 голосов
/ 01 апреля 2020

Ваша цепь неверна. Вам нужно повернуть его и удалить сертификат root CA.

Сервер считает, что root CA является основным сертификатом, и пытается загрузить закрытый ключ против сертификата root ca, который он почему вы видите сообщение.

Также нет необходимости в root CA, так как он всегда должен быть в списке CA клиентов, поэтому вы отправляете сертификат CA клиенту, и клиент просто игнорировать его.

т.е.

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