На Mac High Sierra 10.13.5 я вижу разницу в проверке сертификации TLS. Chrome и Safari довольны проверкой TLS при посещении https://www.visitflorida.com. Кроме того, curl не имеет претензий, и я НЕ использую '-k'. Однако openssl жалуется, что не может найти промежуточный сертификат при попытке этого openssl s_client -connect www.visitflorida.com:443 < /dev/null | openssl x509 -subject -noout
. Я использовал как базовый openssl, так и установленный brew.
Я попытался добавить -CAfile Intermediate.pem (где я загрузил промежуточный сертификат из TrustWave). Несмотря на то, что промежуточный сертификат нигде в моей KeyChain не отображается, я экспортировал свои системные корни KeyChain в один файл и также попробовал это через -CAfile. Ничего не работает. Единственное место в файловой системе, где я вижу сертификаты, - это /etc/ssl/cert.pem, и когда я указываю это через -CAfile, он все равно не работает.
Кто-то предположил, что мои браузеры и curl имеют более слабые требования для проверки TLS, чем openssl. Так ли это на самом деле? Мне трудно в это поверить. Может ли кто-нибудь помочь мне объяснить такое поведение?
Кстати, я знаю, что это можно решить, включив промежуточный сертификат с сертификатом конечной точки на конечную точку TLS для www.visitflorida.com. А теперь, если бы мы могли найти пропавший ключевой файл!
Счастье браузера:
Журнал завивки:
Браузеры, такие как Internet Explorer / Edge, Chrome и Safari, будут искать в поле caIssuer расширений AIA URL-адрес, откуда он может загрузить сертификат вышестоящего центра сертификации, если он не предоставлен сервером во время установления связи TLS.
В сертификате вашего веб-сайта в поле CAISSUER установлено значение http://ssl.trustwave.com/issuers/OVCA2_L1.crt
поэтому все вышеперечисленные браузеры будут загружать его с этого URL-адреса и использовать для построения цепочки.
Инструменты командной строки, такие как OpenSSL s_client
не будет использовать caIssuer для загрузки этого дополнительного сертификата, следовательно, вы наблюдаете ситуацию. Если бы вы попробовали Mozilla Firefox, вы бы тоже заметили то же самое, поскольку Mozilla отказывается использовать это расширение.
Поле caIssuer в конечном итоге скрывает реальную проблему, а именно плохой администратор сервера. RFC 5246, раздел 7.4.2 диктует, что сервер должен отправить certificate_list
состоящий из собственного сертификата, за которым следуют любые промежуточные сертификаты ЦС.