Выбор ответа Middle DNS, TLS и прокси обновлено
Зачем SNI
Вопрос
На одном IP nginx обслуживает 20 доменов с разными сертификатами. Как сервер понимает, какой сертификат отдать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Клиент передаёт имя хоста в SNI в начале TLS-рукопожатия. Сертификат нужен до того, как пойдёт HTTP, поэтому заголовок Host опоздал бы.
Варианты ответа
- По заголовку Host первого HTTP-запроса
- По обратной DNS-записи IP-адреса клиента
- Клиент передаёт имя хоста в SNI в начале TLS-рукопожатияправильный ответ
- Никак: на одном IP возможен только один сертификат
Разбор
Сертификат нужен до того, как пойдёт HTTP, поэтому заголовок Host опоздал бы. SNI (Server Name Indication) передаёт имя в ClientHello. Без SNI сервер отдаёт сертификат по умолчанию, отсюда совет указывать -servername в openssl s_client. Обратный DNS клиента не используется, а ограничение «один сертификат на IP» было до массовой поддержки SNI.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.