Как мы используем SNI в CDN
Теперь при создании нового CDN-ресурса автоматически подключается опция, обеспечивающая использование SNI при обращении к источнику. Рассказываем, что такое SNI, в чём его польза и как изменить имя SNI-хоста.
Что такое SNI
SNI (Server Name Indication) — это расширение протокола TLS, которое позволяет клиентам сообщать имя хоста при обращении к серверу.
Зачем используется SNI
Когда клиент устанавливает соединение с сервером, он обращается к конкретному IP-адресу. Однако очень часто бывает так, что на одном сервере могут располагаться несколько разных, никак не связанных между собой сайтов. Такое может быть, например, если сайт расположен на виртуальном сервере.
Получается, что у нескольких разных сайтов один и тот же IP-адрес. Как понять, какой нужен клиенту?
В HTTP всё просто. Доменное имя сайта обычно указывается в первом HTTP-запросе. Сервер легко определяет, какой сайт нужен клиенту, и соединяет их.
Проблема возникает, если используется HTTPS. В этом случае перед тем, как передавать данные по HTTP, клиент и сервер устанавливают безопасное соединение с помощью TLS. А в TLS-рукопожатии не предусмотрено, чтобы клиент сообщал, какой домен ему нужен.
Проблема в том, что у разных доменов, расположенных на одном сервере, могут быть разные SSL-сертификаты. Когда устанавливается безопасное соединение, сервер должен передать клиенту данные сертификата. А если сервер не может определить, сертификат какого домена нужен, он может передать не то. В этом случае браузер пользователя выдаст ошибку, и соединение будет разорвано.
SNI позволяет сообщить серверу, к какому домену обращается клиент, во время рукопожатия. В этом случае сервер сможет передать правильный SSL-сертификат, и соединение будет успешно установлено.
Как это работает
- Клиент отправляет запрос.
- Запрос направляется к серверу-источнику через CDN.
- Устанавливается безопасное соединение с сервером c помощью TLS.
- При установке соединения в первом же сообщении — client hello — передаётся имя SNI-хоста.
- С помощью этого имени сервер определяет, к какому домену обращается клиент, и передаёт нужный SSL-сертификат.
- Устанавливается безопасное соединение, и начинается передача по HTTP.
Имя SNI-хоста — символическое обозначение, с помощью которого клиент сообщает, а сервер определяет, к какому домену обращён запрос.
Как SNI используется в EdgeCDN
Наша глобальная CDN обслуживает огромное количество разных сайтов и веб-приложений. Через CDN-серверы каждый день проходит множество запросов к разным доменам. Чтобы всё работало без ошибок и пользователи наших клиентов могли быстро и безопасно получать контент, SNI нужно использовать обязательно.
Поэтому опция, обеспечивающая работу SNI, включается при создании нового ресурса автоматически.
По умолчанию устанавливается динамическое имя SNI-хоста. Оно всегда будет совпадать с заголовком Host. То есть, если вы измените заголовок Host, имя SNI-хоста будет изменено автоматически.
Однако, если вам по какой-то причине нужно, чтобы имя SNI-хоста не совпадало с заголовком Host, вы можете поменять его на пользовательское и задать любое имя, какое захотите.
Как изменить имя SNI-хоста
- В личном кабинете выберите ресурс в разделе «CDN-ресурсы».
- Во вкладке «Настройки» нажмите «Показать дополнительные настройки».
- Опция находится в разделе «Безопасность».
- Выберите пользовательское имя SNI-хоста и укажите нужное вам имя в поле ниже.
- Нажмите «Сохранить изменения».
Доставляйте контент быстро, безопасно и без ошибок с помощью EdgeCDN.