В поисках достоверной информации о сертификатах TLS и MacOS - сравнение браузеров, curl, openssl

На 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 промежуточный файл (где я скачал промежуточный сертификат из TrustWave). Несмотря на то, что промежуточный сертификат не отображается нигде в моем KeyChain, я экспортировал свои системные корни KeyChain в один файл и пробовал это также через -CAfile. Ничего не работает Единственное расположение файловой системы, которое я вижу для сертификатов, это /etc/ssl/cert.pem, и когда я указываю это через -CAfile, оно все равно не работает.

Кто-то предположил, что мои браузеры и curl имеют более слабое требование для проверки TLS, чем openssl. Это действительно так? Мне трудно поверить в это. Может кто-нибудь помочь мне объяснить это поведение?

Кстати, я знаю, что это можно решить, включив промежуточный сертификат с сертификатом конечной точки в конечную точку TLS для www.visitflorida.com. Теперь, если бы мы могли найти этот отсутствующий ключевой файл!

Счастье браузера:

Curl log:

1 ответ

Решение

Браузеры, такие как Internet Explorer/Edge, Chrome и Safari, будут искать в поле caIssuer расширений AIA URL-адрес, откуда он может загрузить сертификат высшего CA, если он не был предоставлен сервером во время установления связи 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 состоящий из собственного сертификата, за которым следуют любые промежуточные сертификаты CA.

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