SNI

8 июля 2022
Server Name Identification (SNI) — это расширение протокола шифрования TLS. SNI позволяет клиентскому устройству указывать имя домена, к которому оно пытается подключиться на первом этапе рукопожатия TLS, включающего в себя создание защищенного соединения HTTPS, включая аутентификацию сертификата TLS и генерацию ключа шифрования. Это помогает предотвратить ошибки несоответствия имен.

Проблема

Иногда несколько веб-сайтов расположены на одном сервере, имеют одинаковый IP-адрес, но каждый из них имеет свой собственный SSL-сертификат. В таких случаях сервер может не знать, какой из сертификатов ему следует использовать, когда клиентское устройство пытается подключиться к веб-сайту. Причина в том, что SSL/TLS handshake происходит до того, как клиентское устройство по протоколу HTTP отправляет сообщение о том, к какому сайту оно пытается подключиться. Это может привести к так называемой «ошибке несоответствия общего имени». Это означает, что клиент подключается к нужному IP-адресу, но общее имя в сертификате SSL не совпадает с именем домена.

Решение

SNI участвует в рукопожатии TLS/SSL и помогает клиентам увидеть правильный SSL-сертификат ресурса, к которому они пытаются подключиться. SNI добавляет доменное имя во время рукопожатия TLS, чтобы процесс TLS достиг нужного доменного имени и получил правильный SSL-сертификат, позволяя остальному процессу рукопожатия TLS проходить как обычно. В частности, SNI добавляет имя хоста в сообщение Client Hello, которое является первым шагом рукопожатия TLS. Таким образом, SNI позволяет клиентам открывать безопасное соединение с веб-сайтом, даже если многие другие ресурсы имеют тот же IP-адрес.

SNI был добавлен в качестве расширения к TLS/SSL в 2003 году, и изначально он не был частью протокола. Почти все браузеры, операционные системы и веб-серверы поддерживают SNI. Если вы используете очень старую версию браузера или мобильную операционную систему типа BlackBerry, скорее всего, вы не сможете посетить определенные веб-сайты, а ваш браузер отправит сообщение об ошибке «Ваше соединение не является приватным».

Мы используем файлы cookies для оптимизации функциональности сайта и улучшения качества услуг. Нажимая «Принять», вы даете согласие на работу с этими файлами. Чтобы узнать больше, пожалуйста, прочтите нашу Политику конфиденциальности.