Да, но есть некоторые оговорки.
Это достигается с помощью индикации имени сервера, расширения для безопасности транспортного уровня.
Что такое индикация имени сервера?
Индикация имени сервера ( RFC 6066 ; устаревший RFC 4366 , RFC 3546 ) является расширением безопасности транспортного уровня, которое позволяет клиенту сообщать серверу имя хоста, к которому он пытается подключиться.
SNI совместим с TLS 1.0 и выше в соответствии со спецификацией, но реализации могут отличаться (см. Ниже). Его нельзя использовать с SSL, поэтому соединение должно согласовывать TLS (см. RFC 4346 приложение E ) для использования SNI. Обычно это происходит автоматически с поддерживаемым программным обеспечением.
Зачем нужен SNI?
При обычном HTTP- соединении браузер сообщает серверу имя хоста сервера, к которому он пытается подключиться, используя Host:
заголовок. Это позволяет веб-серверу на одном IP-адресе обслуживать контент для нескольких имен хостов, который обычно называют виртуальным хостингом на основе имен .
Альтернативой является назначение уникальных IP-адресов для каждого обслуживаемого имени веб-хоста. Обычно это делалось в самые первые дни Интернета, прежде чем стало широко известно, что IP-адреса закончатся и начнутся меры по сохранению, и до сих пор это делается для виртуальных хостов SSL (не использующих SNI).
Поскольку этот метод передачи имени хоста требует, чтобы соединение уже было установлено, он не работает с соединениями SSL / TLS. К моменту установки безопасного соединения веб-сервер уже должен знать, какое имя хоста он будет обслуживать клиенту, поскольку сам веб-сервер устанавливает безопасное соединение.
SNI решает эту проблему, заставляя клиента передавать имя хоста как часть согласования TLS, так что сервер уже знает, какой виртуальный хост должен использоваться для обслуживания соединения. Затем сервер может использовать сертификат и конфигурацию для правильного виртуального хоста.
Почему бы не использовать разные IP-адреса?
Host:
Заголовок HTTP был определен так, чтобы с одного IP-адреса можно было обслуживать несколько веб-хостов из-за нехватки адресов IPv4, что было признано проблемой еще в середине 1990-х годов. В общедоступных средах веб-хостинга сотни уникальных, не связанных между собой веб-сайтов могут обслуживаться с использованием одного IP-адреса таким образом, сохраняя адресное пространство.
Затем среды общего хостинга обнаружили, что крупнейшим потребителем пространства IP-адресов была потребность в защищенных веб-сайтах с уникальными IP-адресами, что создавало потребность в SNI в качестве меры пресечения на пути к IPv6. Сегодня иногда трудно получить всего 5 IP-адресов (/ 29) без существенного обоснования, что часто приводит к задержкам развертывания.
С появлением IPv6 такие методы сохранения адресов больше не нужны, поскольку одному узлу может быть назначено больше адресов IPv6, чем сегодня содержит весь Интернет, но эти методы, вероятно, все еще будут использоваться в будущем для обслуживания устаревшего IPv4. соединения.
Предостережения
Некоторые комбинации операционной системы и браузера не поддерживают SNI (см. Ниже), поэтому использование SNI подходит не для всех ситуаций. Сайты, нацеленные на такие комбинации системы и браузера, должны отказаться от SNI и продолжать использовать уникальные IP-адреса для каждого виртуального хоста.
Особо следует отметить, что ни одна версия Internet Explorer в Windows XP не поддерживает SNI. Поскольку эта комбинация по-прежнему представляет значительную (но неуклонно снижающуюся часть интернет-трафика в декабре 2012 года, по данным NetMarketShare), составляющую около 16% интернет-трафика, SNI не подойдет для сайта, ориентированного на эти группы пользователей.
Служба поддержки
Многие, но не все, часто используемые программные пакеты поддерживают SNI.
(Пропуск из этого списка не обязательно означает отсутствие поддержки; это означает, что был ограничен объем, который я мог набрать, или я не смог быстро найти информацию в поиске. Если вашего программного пакета нет в списке, поиск для его имени плюс sni
должен показать, есть ли поддержка и как ее настроить.)
Поддержка библиотеки
Большинство пакетов зависят от внешней библиотеки для обеспечения поддержки SSL / TLS.
- GNU TLS
- JSSE (Oracle Java) 7 или выше, только в качестве клиента
- libcurl 7.18.1 или выше
- NSS 3.1.1 или выше
- OpenSSL 0.9.8j или выше
- OpenSSL 0.9.8f или выше, с флагами настройки
- Qt 4.8 или выше
Поддержка сервера
Большинство текущих версий популярного серверного программного обеспечения поддерживают SNI. Инструкции по настройке доступны для большинства из них:
Поддержка клиентов
Большинство современных веб-браузеров и пользовательских агентов командной строки поддерживают SNI.
рабочий стол
- Chrome 5 или выше
- Chrome 6 или выше в Windows XP
- Firefox 2 или выше
- Internet Explorer 7 или выше, работает под управлением Windows Vista / Server 2008 или выше
- Internet Explorer в Windows XP не поддерживает SNI независимо от версии IE
- Konqueror 4.7 или выше
- Opera 8 или выше (для работы может потребоваться TLS 1.1)
- Safari 3.0 в Windows Vista / Server 2008 или более поздней версии или Mac OS X 10.5.6 или более поздней версии
мобильный
- Браузер Android на 3.0 Honeycomb или выше
- iOS Safari на iOS 4 или выше
- Windows Phone 7 или выше
Командная строка
- CURL 7.18.1 или выше
- wget 1.14 или выше (в дистрибутивах может быть патч для поддержки SNI)
Никакой поддержки
- Браузер BlackBerry
- Internet Explorer (любая версия) в Windows XP
(Примечание: некоторая информация для этого ответа была получена из Википедии .)