OpenSSL: не удалось проверить первый сертификат для URL Experian

Я пытаюсь проверить 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

6 ответов

Решение

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

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

Центром выдачи сертификата сервера конечного объекта является

VeriSign Class 3 Безопасный сервер CA - G3

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

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

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

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

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

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

Например, ваш центр сертификации, скорее всего, даст вам 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), вы получите точные симптомы, которые вы описываете.

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

Я столкнулся с той же проблемой при установке моего подписанного сертификата на экземпляр 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)

Вот что вы можете сделать:-

SSL-сертификаты Exim

По умолчанию /etc/exim.conf будет использовать файлы cert / key:

/etc/exim.cert
/etc/exim.key

так что если вам интересно, где разместить свои файлы, вот где.

Они контролируются параметрами exim.conf:

tls_certificate = /etc/exim.cert
tls_privatekey = /etc/exim.key

Промежуточные сертификаты

Если у вас есть корневой сертификат CA (пакет CA, цепочка и т. Д.), Вы добавите содержимое вашего CA в exim.cert после вашего фактического сертификата.

Вероятно, неплохо было бы убедиться, что у вас есть копия всего в другом месте, на случай, если вы сделаете ошибку.

Dovecot и ProFtpd также должны читать его правильно, поэтому dovecot больше не нуждается в опции ssl_ca. Таким образом, в обоих случаях нет необходимости вносить какие-либо изменения в exim.conf или dovecot.conf(/etc/dovecot/conf/ssl.conf)

Если вы используете MacOS, используйте:

sudo cp /usr/local/etc/openssl/cert.pem /etc/ssl/certs

после этого ошибка Trust anchor not found исчезнет

Для тех, кто использует сертификаты zerossl.com, перетащите все сертификаты (как есть) в соответствующие папки.

Вырезание и вставка текста в существующие файлы может вызвать проблемы с utf8 - в зависимости от ОС, формата и межсимвольных интервалов.

Другие вопросы по тегам