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

Зачем SNI

Вопрос

На одном IP nginx обслуживает 20 доменов с разными сертификатами. Как сервер понимает, какой сертификат отдать?

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

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

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

Коротко

Правильный ответ: Клиент передаёт имя хоста в SNI в начале TLS-рукопожатия. Сертификат нужен до того, как пойдёт HTTP, поэтому заголовок Host опоздал бы.

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

  1. По заголовку Host первого HTTP-запроса
  2. По обратной DNS-записи IP-адреса клиента
  3. Клиент передаёт имя хоста в SNI в начале TLS-рукопожатияправильный ответ
  4. Никак: на одном IP возможен только один сертификат

Разбор

Сертификат нужен до того, как пойдёт HTTP, поэтому заголовок Host опоздал бы. SNI (Server Name Indication) передаёт имя в ClientHello. Без SNI сервер отдаёт сертификат по умолчанию, отсюда совет указывать -servername в openssl s_client. Обратный DNS клиента не используется, а ограничение «один сертификат на IP» было до массовой поддержки SNI.

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

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