Что такое SNI (Server Name Indication)

Технология SNI Статьи

Что такое SNI (Server Name Indication)

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

Как это работает

1. Проблема без SNI
   Когда клиент (например, браузер) подключается к серверу через HTTPS, он сначала устанавливает TLS-соединение. Без SNI сервер не знает, какой именно домен клиент запрашивает, потому что доменное имя передаётся в HTTP-запросе уже после установки защищённого соединения. В результате сервер может использовать только один SSL/TLS-сертификат для всех своих доменов.

2. Решение с SNI
   SNI добавляет доменное имя в начальное сообщение клиента при установлении TLS-соединения (в рамках этапа «handshake»). Это позволяет серверу заранее узнать, для какого домена необходимо установить защищённое соединение и какой сертификат для этого использовать.

Преимущества SNI

  • Экономия ресурсов
    Один сервер может обслуживать несколько доменов с разными сертификатами без необходимости выделять уникальный IP-адрес для каждого домена.
  • Поддержка виртуального хостинга
    Благодаря возможности использовать разные сертификаты на одном IP-адресе, SNI получил широкое распространение в облачных и хостинговых сервисах.
  • Удобство управления
    Можно легко добавлять или изменять сертификаты для отдельных доменов без необходимости масштабных изменений на уровне инфраструктуры.

Ограничения

  1. Старые устройства
    SNI не поддерживается на очень старых клиентах и серверах (например, Internet Explorer на Windows XP или в старых версиях OpenSSL).
  2. Шифрование имени домена
    Имя домена передаётся открытым текстом во время TLS Handshake, что может быть проблемой для конфиденциальности. Решение — использование таких технологий, как Encrypted Client Hello (ECH).

Поддержка

   Современные браузеры и серверы широко поддерживают SNI, что сделало эту технологию стандартом в индустрии. Большинство приложений (например, Apache, Nginx, Dovecot или Postfix) и библиотек для работы с TLS уже давно имеют поддержку SNI.

Пример настройки SNI в Nginx

   Ниже приведён упрощённый пример конфигурации Nginx. Данный пример использует два виртуальных хоста, каждый из которых имеет свой сертификат:

   Оба виртуальных хоста «слушают» один и тот же порт (443), но при этом настроены на разные имена серверов (example1.com и example2.com).
   Благодаря SNI веб-сервер понимает, к какому сертификату нужно обращаться при установке HTTPS-соединения для каждого домена.

Оцените автора
Серверное администрирование
Добавить комментарий