Так, але є деякі застереження.
Це здійснюється за допомогою індикації імені сервера, розширення на безпеку транспортного шару.
Що таке вказівка імені сервера?
Вказівка імені сервера ( 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. Оскільки ця комбінація все ще становить значну (але стабільно зменшується; близько 16% інтернет-трафіку в грудні 2012 року за даними NetMarketShare), частка інтернет-трафіку, 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 або вище
- iOS Safari на iOS 4 або новішої версії
- Windows Phone 7 або новішої версії
Командний рядок
- CURL 7.18.1 або вище
- wget 1.14 або вище (дистрибутиві можуть підтримувати виправлення для підтримки SNI)
Ніякої підтримки
- Браузер BlackBerry
- Internet Explorer (будь-яка версія) на Windows XP
(Примітка. Деякі відомості для цієї відповіді були отримані з Вікіпедії .)