SSL и HTTPS

SNI: как один IP-адрес обслуживает сразу несколько SSL-сертификатов

SNI (Server Name Indication) — это расширение протокола TLS, которое позволяет одному IP-адресу обслуживать сразу несколько сайтов с разными SSL-сертификатами. Именно благодаря SNI хостинг-провайдеры могут размещать тысячи HTTPS-сайтов на общих серверах, не выделяя каждому отдельный IP.

Что такое SNI простыми словами?

Представьте многоквартирный дом с одним почтовым ящиком на всех. Раньше почтальон не знал, кому нести письмо, если на конверте не было имени получателя — приходилось ставить отдельный ящик для каждой квартиры. SNI — это как раз то самое «имя получателя» на конверте: браузер, устанавливая защищённое соединение, сразу сообщает серверу, к какому именно домену он обращается. Сервер видит это имя ещё до того, как отправит SSL-сертификат, и подбирает нужный.

Без такого «имени на конверте» сервер просто не знал бы, какой из десятков установленных сертификатов отдать браузеру, ведь запрос приходит на один и тот же IP-адрес.

Зачем вообще понадобилась эта технология?

Дело в том, что SSL-рукопожатие — процесс установки защищённого соединения — начинается раньше, чем браузер сообщает серверу адрес сайта в обычном HTTP-запросе. Сервер должен «предъявить» сертификат уже на этапе шифрования, а имя домена браузер традиционно передавал только после установки соединения. Получалась проблема: как серверу понять, чей сертификат показывать, если запросов на один IP приходит множество, а сайтов на нём — тоже множество?

Долгое время выход был только один — выделять каждому HTTPS-сайту собственный уникальный IP-адрес. Именно поэтому в первые годы после появления SSL защищённые сайты обходились дороже: провайдеру приходилось резервировать под каждый домен отдельный адрес из ограниченного пула IPv4.

Как SNI решает эту проблему технически?

SNI добавляет в самое первое сообщение TLS-рукопожатия (ClientHello) поле с именем домена. Сервер читает это поле ещё до того, как отправит какой-либо сертификат, и на основе имени выбирает правильный сертификат из своей базы. Дальше рукопожатие идёт как обычно: сервер отправляет нужный сертификат, браузер проверяет цепочку доверия, стороны договариваются о ключах шифрования — и защищённое соединение установлено.

Весь этот обмен занимает доли секунды и пользователь его не замечает. Для него сайт просто открывается по HTTPS, как и должен.

Все ли браузеры и серверы поддерживают SNI?

Сегодня — практически все. SNI появился в спецификациях TLS ещё в начале 2000-х годов и с тех пор стал стандартом де-факто. Все современные браузеры, операционные системы и веб-серверы работают с ним без проблем.

Интересный факт: главным исключением долгое время оставался Internet Explorer на Windows XP — эта связка не умела работать с SNI. Из-за этого владельцам сайтов, которым была важна поддержка старых версий Windows, приходилось либо мириться с ошибками у части посетителей, либо всё же покупать отдельный IP-адрес именно под таких пользователей. Сегодня доля устройств без поддержки SNI настолько мала, что почти все хостинги и CDN используют эту технологию по умолчанию, не оглядываясь на устаревшие браузеры.

Клауд АйСи — цифровые сервисы для бизнеса в одном кабинете: создание сайтов под ключ, техподдержка, Умный онлайн-чат, проверка контрагентов и 1С в облаке.
Сайт под ключ — от 20 000 ₽.
Есть бесплатные тарифы на сервисы.

Что будет, если сервер не поддерживает SNI?

Если сервер по каким-то причинам не умеет работать с SNI, он отдаёт браузеру сертификат «по умолчанию» — обычно тот, что настроен первым или основным. В результате пользователь, который зашёл на другой домен на этом же IP, увидит предупреждение о несоответствии имени сайта в сертификате: браузер честно сообщит, что сертификат выдан не для этого домена, и посчитает соединение подозрительным.

Такая ситуация встречается редко, но иногда возникает при работе со старым оборудованием, специфическими API-клиентами или устаревшими библиотеками, которые не обновлялись годами.

Как проверить, использует ли мой сайт SNI?

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

Для обычного владельца сайта эта проверка чаще всего не нужна: если хостинг современный, а сайт открывается по HTTPS без предупреждений в разных браузерах, значит SNI работает исправно.

Почему это важно при выборе хостинга?

Технология SNI напрямую влияет на то, сколько будет стоить размещение сайта с SSL. Благодаря ей провайдеры могут размещать множество HTTPS-сайтов на общих IP-адресах, а значит — не нужно переплачивать за выделенный IP только ради шифрования. Это особенно актуально для владельцев интернет-магазинов, лендингов и корпоративных сайтов, которым важна защищённая передача данных, но нет необходимости в отдельном адресе по другим техническим причинам.

При этом важно, чтобы хостинг-платформа грамотно настраивала работу с несколькими сертификатами на одном сервере: правильно раздавала их по доменам, вовремя продлевала и следила за корректной цепочкой доверия. В «Клауд АйСи» вопрос размещения SSL-сертификатов для сайтов на общих серверах решён именно так: клиенты получают защищённое соединение для своих доменов без необходимости разбираться в тонкостях SNI и выделенных IP — вся техническая часть настраивается на стороне платформы.

Нужен ли выделенный IP-адрес, если и так всё работает через SNI?

Для подавляющего большинства сайтов — нет, не нужен. SNI закрывает потребность в размещении множества HTTPS-доменов на одном адресе без каких-либо компромиссов по безопасности. Выделенный IP может пригодиться в отдельных случаях: например, для работы с определённым корпоративным ПО, специфическими требованиями к инфраструктуре или устаревшими системами, которые действительно не умеют работать с SNI. Но для обычного сайта, интернет-магазина или лендинга разница для конечного пользователя незаметна.

По сути, SNI — одна из тех технологий, которые работают незаметно, но без которых современный защищённый интернет выглядел бы совсем иначе: дороже, менее гибко и с куда более ограниченным количеством HTTPS-сайтов.

Сайт под ключ и сервисы — в Клауд АйСи

Закажите разработку сайта под ключ и подключите нужные сервисы — онлайн-чат, проверку контрагентов и 1С в облаке.

Частые вопросы

SNI — это то же самое, что SSL-сертификат?

Нет. SSL/TLS-сертификат — это файл, который подтверждает подлинность сайта и обеспечивает шифрование. SNI — это механизм внутри протокола TLS, который помогает серверу выбрать нужный сертификат, если на одном IP размещено несколько сайтов.

Может ли из-за SNI сайт открываться медленнее?

Практически нет — передача имени домена в составе рукопожатия добавляет ничтожно малую задержку, незаметную для пользователя.

Нужно ли отдельно включать SNI на сайте?

Обычно нет: поддержка SNI встроена в современные веб-серверы и настраивается автоматически при установке SSL-сертификата на хостинге.

Как понять, что проблема на сайте связана именно с отсутствием поддержки SNI?

Главный признак — предупреждение браузера о несовпадении имени сайта в сертификате именно у пользователей со старыми или нестандартными устройствами и приложениями, при этом у большинства посетителей сайт открывается нормально.