Назад | Перейти на главную страницу

Как вручную аутентифицировать сертификат SSL, подписанный ЦС

Служба, которую я использую, обновляет свой сертификат SSL, и теперь мои подключения к их службе не работают. Они работали до изменения (например, за 1 час до изменения).

Их старые и новые сертификаты серверов должны были быть подписаны Verisign. Как я могу проверить сертификат вручную?

Проходит ли это через openssl x509 инструмент сделать это автоматически?

С помощью openssl s_client чтобы подключиться к их серверу, я могу увидеть сертификат, который они отправляют во время подтверждения SSL. Запускаем его через инструмент x509 с -text вариант, я получаю следующую строку эмитента:

Issuer: C=US, O=VeriSign, Inc., OU=VeriSign Trust Network, OU=Terms of use at https://www.verisign.com/rpa (c)10, CN=VeriSign Class 3 International Server CA - G3

и Subject: CN= значение соответствует имени хоста, к которому я подключаюсь.

Жалобы, которые я получаю при соединении с s_client, следующие (я пропустил строки темы, чтобы не называть службу):

verify error:num=20:unable to get local issuer certificate
verify return:1
verify error:num=27:certificate not trusted
verify return:1
verify error:num=21:unable to verify the first certificate
verify return:1

Может ли кто-нибудь посоветовать мне, как узнать, почему мои инструменты не доверяют этому сертификату?

Я предпочитаю быстрый пас с curl -Iv https://www.example.com. curl выгружает соответствующие биты SSL (и будет использовать имеющийся у него список центров сертификации).

Если вам нужно сделать больше вручную, вы можете запустить openssl verify с правильными параметрами, в частности с параметром -CApath:

$ openssl verify --help
usage: verify [-verbose] [-CApath path] [-CAfile file] [-purpose purpose] [-crl_check] [-engine e] cert1 cert2 ...

Я предполагаю, что ваша проблема заключается в том, что сервер не публикует промежуточный пакет сертификатов. смотреть на https://knowledge.verisign.com/support/ssl-certificates-support/index?page=content&id=AR657 (или, точнее, инструкции по электронной почте от Verisign о том, как установить сертификат).

Это потому, что вы не используете -CApath или -CAfile в вашей командной строке. Эти параметры сообщают openssl, где искать доверенные файлы CA: в каталоге или в конкретном файле.

С этим:

openssl s_client -CAfile /etc/ssl/ca-bundle.pem -connect www.bofa.com:443
CONNECTED(00000003)
depth=3 C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority
verify return:1
depth=2 C = US, O = "VeriSign, Inc.", OU = VeriSign Trust Network, OU = "(c) 2006 VeriSign, Inc. - For authorized use only", CN = VeriSign Class 3 Public Primary Certification Authority - G5
verify return:1
depth=1 C = US, O = "VeriSign, Inc.", OU = VeriSign Trust Network, OU = Terms of use at https://www.verisign.com/rpa (c)06, CN = VeriSign Class 3 Extended Validation SSL CA
verify return:1
depth=0 1.3.6.1.4.1.311.60.2.1.3 = US, 1.3.6.1.4.1.311.60.2.1.2 = Delaware, businessCategory = Private Organization, serialNumber = 2927442, C = US, postalCode = 60603, ST = Illinois, L = Chicago, street = 135 S La Salle St, O = Bank of America Corporation, OU = Network Infrastructure, CN = www.bankofamerica.com
verify return:1

Без этого:

openssl s_client -connect www.bofa.com:443CONNECTED(00000003)
depth=3 C = US, O = "VeriSign, Inc.", OU = Class 3 Public Primary Certification Authority
verify error:num=19:self signed certificate in certificate chain
verify return:0

Имеет ключевое значение.