OpenSSL: невозможно проверить первый сертификат для URL Experian - PullRequest
66 голосов
/ 28 сентября 2011

Я пытаюсь проверить SSL-соединение с Experian в Ubuntu 10.10 с помощью клиента OpenSSL.

openssl s_client -CApath /etc/ssl/certs/ -connect dm1.experian.com:443

Проблема в том, что соединение закрывается с кодом возврата Verify: 21 (невозможно проверить первый сертификат).

Я проверил список сертификатов и использованный сертификатподписать Experian (VeriSign Class 3 Secure Server CA - G3) включен в список.

/etc/ssl/certs/ca-certificates.crt 

Пока не знаю, почему он не может проверить первый сертификат.Заранее спасибо.

Полный ответ можно посмотреть здесь: https://gist.github.com/1248790

Ответы [ 3 ]

92 голосов
/ 04 октября 2011

Первое сообщение об ошибке сообщает вам больше о проблеме:

проверить ошибку: num = 20: невозможно получить сертификат локального эмитента

Центр сертификации выдающегосертификата сервера конечного объекта

VeriSign Class 3 Secure Server CA - G3

Посмотрите внимательно в своем файле CA - вы не найдетеэтот сертификат, поскольку он является промежуточным центром сертификации. То, что вы обнаружили, было Public-CA с аналогичным именем G3 Public Primary CA от VeriSign.

Но почему другое соединение успешно, но это не так?Проблема заключается в неправильной конфигурации серверов (убедитесь сами, используя опцию -debug).«Хороший» сервер отправляет всю цепочку сертификатов во время рукопожатия, предоставляя вам необходимые промежуточные сертификаты.

Но отказавший сервер отправляет вам только сертификат конечного объекта, и OpenSSL не может загрузить отсутствующий промежуточный сертификат "на лету" (что было бы возможно при интерпретацииРасширение прав доступа к информации).Поэтому ваша попытка не удалась с использованием s_client, но, тем не менее, она была бы успешной, если вы перейдете по тому же URL-адресу, используя, например, FireFox (который поддерживает функцию «обнаружения сертификата»).

Ваши варианты решения проблемы - либо исправлениеэто на стороне сервера, заставляя сервер отправлять также всю цепочку или передавая отсутствующий промежуточный сертификат в OpenSSL в качестве параметра на стороне клиента.

36 голосов
/ 20 апреля 2016

Добавление дополнительной информации для ответа на тиснение.

Проще говоря, в вашей цепочке сертификатов есть неверный сертификат.

Например, ваш центр сертификации, скорее всего, предоставит вам 3 файла.

  • your_domain_name.crt
  • DigiCertCA.crt # (или каково бы ни было название вашего центра сертификации)
  • TrustedRoot.crt

Скорее всего, вы объединили все эти файлы в один пакет.

-----BEGIN CERTIFICATE----- 
(Your Primary SSL certificate: your_domain_name.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Intermediate certificate: DigiCertCA.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(Your Root certificate: TrustedRoot.crt) 
-----END CERTIFICATE-----

Если вы создаете пакет, но используете старую или неправильную версию вашего промежуточного сертификата (в моем примере это DigiCertCA.crt), вы получите точные симптомы, которые вы описываете.

Повторно загрузите все сертификаты из своего центра сертификации и создайте новый пакет.

10 голосов
/ 30 ноября 2012

Я столкнулся с той же проблемой при установке моего подписанного сертификата на экземпляр Amazon Elastic Load Balancer.

Казалось, что все находят через браузер (Chrome), но доступ к сайту через мой java-клиент вызывает исключение javax.net.ssl.SSLPeerUnverifiedException

Что я не сделал, так это предоставил файл "цепочки сертификатов" при установке моего сертификата на мой экземпляр ELB (см. https://serverfault.com/questions/419432/install-ssl-on-amazon-elastic-load-balancer-with-godaddy-wildcard-certificate)

. Нам был отправлен только наш подписанный открытый ключиз подписывающего органа, поэтому мне пришлось создать собственный файл цепочки сертификатов. Используя панель просмотра сертификатов моего браузера, я экспортировал каждый сертификат в цепочку подписей. (Порядок цепочки сертификатов см. в https://forums.aws.amazon.com/message.jspa?messageID=222086)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...