Проблема
Иногда несколько веб-сайтов расположены на одном сервере, имеют одинаковый 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, скорее всего, вы не сможете посетить определенные веб-сайты, а ваш браузер отправит сообщение об ошибке «Ваше соединение не является приватным».