Выбор ответа Middle DNS, TLS и прокси спрашивают часто обновлено

Работает в браузере, не работает в curl

Вопрос

Сайт открывается в браузере, а curl и Java-клиент падают с ошибкой проверки сертификата. Что самое вероятное?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Сервер не отдаёт промежуточный сертификат, браузер достроил цепочку сам. Сервер должен отдавать сертификат вместе с промежуточными (в nginx sslcertificate указывает на fullchain).

Варианты ответа

  1. curl и Java не поддерживают TLS 1.3, который включён на сервере
  2. Сертификат выпущен Let's Encrypt, а curl и Java не доверяют его корню
  3. Сервер не отдаёт промежуточный сертификат, браузер достроил цепочку самправильный ответ
  4. Сайт работает только по HTTP/2, а curl и Java ходят по HTTP/1.1

Разбор

Сервер должен отдавать сертификат вместе с промежуточными (в nginx ssl_certificate указывает на fullchain). Браузеры умеют догружать недостающие промежуточные или берут их из кеша, а большинство библиотек нет. Современный curl поддерживает TLS 1.3, корни Let's Encrypt есть в стандартных хранилищах, HTTP/2 не влияет на проверку.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.