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

Невозможно использовать встроенный пакет CA для проверки SSL-сертификата GoDaddy SHA2

Я столкнулся с интересной проблемой. У нас есть PHP-скрипт, который связывается с грузоотправителем LTL (https://facts.dohrn.com/). Этот сценарий не работает, потому что он не может проверить сертификат SSL. Я зашел на сайт и обнаружил, что они используют сертификат GoDaddy SHA2 (использует Комплекты сертификатов GoDaddy - G2, который используется для SHA2).

У меня последняя версия ca-certificate установлен и похоже, что у них есть Корневой центр сертификации Go Daddy - G2 но это не одно и то же, и он не проходит во всех формах проверки. Я наконец смог заставить его работать, скопировав пакет и напрямую используя его в запросе CURL. Но это просто обходной путь. Есть ли что-то еще, что мне не хватает, что могло бы сделать эту работу без установки CA напрямую?

# openssl s_client -connect fact.dohrn.com:443
ПОДКЛЮЧЕНО (00000003) depth = 0 OU = Контроль домена подтвержден, CN = fact.dohrn.com verify
ошибка: число = 20: невозможно получить подтверждение сертификата местного эмитента: возврат: 1
depth = 0 OU = Контроль домена подтвержден, CN = fact.dohrn.com проверить
ошибка: число = 27: сертификат не доверяет проверить возврат: 1 глубина = 0 OU =
Контроль домена подтвержден, CN = fact.dohrn.com verify
ошибка: число = 21: невозможно проверить первый сертификат проверить возврат: 1
--- Цепочка сертификатов 0 с: / OU = Контроль домена подтвержден / CN = fact.dohrn.com
i: /C=US/ST=Arizona/L=Scottsdale/O=GoDaddy.com,
Inc./OU=http://certs.godaddy.com/repository//CN= Go Daddy Secure
Центр сертификации - G2
--- Сертификат сервера [сертификат удален]
----- КОНЕЦ СЕРТИФИКАТА -----
subject = / OU = Контроль домена подтвержден / CN = fact.dohrn.com
эмитент = / C = US / ST = Arizona / L = Scottsdale / O = GoDaddy.com,
Inc./OU=http://certs.godaddy.com/repository//CN= Go Daddy Secure
Центр сертификации - G2
--- Не отправлены имена ЦС сертификатов клиента
--- Подтверждение SSL прочитало 1470 байт и записало 563 байта
--- Новое, TLSv1 / SSLv3, шифр RC4-SHA Открытый ключ сервера - 2048 бит Безопасное повторное согласование НЕ поддерживается Сжатие: НЕТ Расширение:
НЕТ SSL-сеанса:
Протокол: TLSv1
Шифр: RC4-SHA
Идентификатор сеанса: 1A23000017A7003411F3833970B7FA23C6D782E663CE0C8B17DE4D5A15DEE1A5
Идентификатор сеанса-ctx:
Мастер-ключ: F6C9C6345A09B7965AF762DE4BEFE8BDD249136BF30D9364598D78CF123F17230B0C25DD552F103BEF9A893F75EAD2B0
Key-Arg: Нет
Krb5 Заказчик: Нет
Идентификатор PSK: Нет
Подсказка идентичности PSK: Нет
Время начала: 1432044402
Тайм-аут: 300 (сек)
Проверить код возврата: 21 (невозможно проверить первый сертификат)

Похоже, что веб-сервер на https://facts.dohrn.com/ не включает промежуточный сертификат.

Это могло бы показаться ошибкой конфигурации с их стороны. Это определенно то, что может вызвать проблемы с совместимостью, поскольку на самом деле вы должны полагаться только на клиентов, у которых заранее установлены корневые сертификаты.

См. Цепочку сертификатов, например, из Результат SSLLabs: (Вы также заметите, что есть много других проблем с их настройкой SSL.)

1   Sent by server  facts.dohrn.com 
Fingerprint: 823e3a70f194c646498b2591069b3727ad0014d9 
RSA 2048 bits (e 65537) / SHA256withRSA

2   Extra download  Go Daddy Secure Certificate Authority - G2 
Fingerprint: 27ac9369faf25207bb2627cefaccbe4ef9c319b8 
RSA 2048 bits (e 65537) / SHA256withRSA

3   In trust store  Go Daddy Root Certificate Authority - G2   Self-signed  
Fingerprint: 47beabc922eae80e78783462a79f45c254fde68b 
RSA 2048 bits (e 65537) / SHA256withRSA


Я бы сказал, что ваши основные варианты - либо попытаться убедить поставщика услуг исправить их службу, либо обойти проблему с вашей стороны, предоставив клиенту сертификаты, которые должен был предоставить их сервер.