Кілька доменів з SSL на одному IP


Відповіді:


28

Я думаю, що це гарна ідея, як пояснити, яка проблема насправді у віртуальних хостах та SSL / TLS.

Під час підключення до сервера apache через HTTP ви надсилаєте набір заголовків http. Вони виглядають так:

GET /index.html HTTP/1.1
 Host: www.nice-puppies.com

Якщо у вас є віртуальний хостинг, то апаш перегляне поле хостів, то виберіть потрібний для вас index.html. Проблема полягає в тому, коли ви додаєте SSL / TLS. Сервер встановлює шифрування перед тим, як ви коли-небудь надсилатимете свій http-запит. З цього приводу сервер не знає, чи збираєтесь ви на www.nice-puppies.com або www.evil-haxxor.com доти, доки не завершиться автентифікація / шифрування. Сервер не може здогадатися (оскільки відправлення неправильного сертифіката дає вам неприємне повідомлення про помилку).

Одне рішення - сертифікат підстановки (як зазначено вище), який дійсний для * .nice-puppies.com. Таким чином, ви можете використовувати один і той же сертифікат для кількох доменів, але у вас немає сертифікату * .com (добре, ви можете, але це буде дуже погано для всіх інших), тому загалом вам знадобиться окремий IP для кожного Домен HTTPS.


4
Хороше пояснення, але у вас може бути сертифікат UC, який дозволить мати кілька доменів в одному cert
Сем Коган

1
Так, ви можете мати сертифікати уніфікованого зв'язку (сертифікати UCC / UC). Я, мабуть, мав би їх згадати. Наскільки я бачив, вони в основному використовуються з сервером Exchange / Office Communication Server. І якщо ви використовуєте один і той же сертифікат для різних сайтів, ви зловживаєте x509 семантикою. Але вони працюють на більшості стеків TLS.
pehrs

6
Також SNI. Ваше твердження вже не остаточне, пер. Ваше пояснення є історично точним, але вже не відображає сучасні технології.
Warner

4
SNI не працює (поки що?) З IE6 в Windows XP. Який вид обмежує цінність, враховуючи частку ринку. Я вважаю, що початкового користувача більше цікавило те, що буде, ніж набір хак, які існують, щоб їх обійти.
pehrs

Намагався виправити орфографічну помилку наприкінці SHTTP на HTTPS, але це було відхилено як занадто малу редагування.
Стюарт

8

Реальне рішення цієї проблеми - "Вказівка ​​імені сервера":

http://en.wikipedia.org/wiki/Server_Name_Indication

Це тільки починає розгортатися на сервери та веб-клієнтів, тому це насправді не те, що ви можете використовувати зараз, але, сподіваємось, через кілька років це не буде настільки великою проблемою.


2

Проблема полягає в тому, що сертифікат SSL прив’язаний до IP-адреси, а не до імені хоста. Коли з'єднання надходить на IP-адресу для HTTPS-запиту, першою дією є встановлення зв'язку SSL, передаючи сертифікат сервера та / або сертифікат клієнта. Під час цього етапу рукостискання з'єднання сервер Apache не може дізнатися, для чого потрібний запит. Для трафіку HTTP (не-SSL) це відрізняється, оскільки після встановлення з'єднання сервер Apache може визначити віртуальну конфігурацію хоста, яку використовувати, якщо клієнт надсилає Hostзаголовок або передає його першому налаштованому віртуальному хосту.

Якщо у вас було декілька віртуальних хостів під одним доменом, ви могли встановити один сертифікат підстановки на IP-адресу та мати кілька віртуальних хостів з різними іменами серверів; однак, якщо ці імена серверів не мають одного імені домену, вони створювали б помилки сервера клієнта. Це буде працювати, оскільки сертифікат підстановки буде дійсним для всіх імен хостів під цим доменним іменем. Вам знадобиться ще одна IP-адреса, якщо доменні імена будуть іншими, оскільки перший сертифікат, визначений для цієї IP-адреси, буде представлений для підключення клієнтів.


1

Це може бути додано в один єдиний сертифікат ssl як SAN (Subject Alternative Name). З мого досвіду мені довелося попросити сертифікат sll організації. я використав глобальний знак.


1

Власне, за допомогою сучасного програмного забезпечення ви МОЖЕТЕ обслуговувати декілька HTTPS-сайтів за однією IP-адресою, використовуючи нову функцію під назвою «Вказівка ​​імені сервера SNI».

http://en.wikipedia.org/wiki/Server_Name_Indication

http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

Я ще повинен цим користуватися, але це добре звучить для внутрішніх та інтранетних сайтів. Більшість сучасних браузерів підтримують SNI. IE6 не підтримує SNI, але IE7.

(Виправлення: 20100426 - SNI взагалі не підтримується у Windows XP. Windows Vista та вище підтримують SNI. Див. "Розділ 2.2.3" на веб- сторінці http://msdn.microsoft.com/en-us/library/dd208005% 28v = PROT.13% 29.aspx # id8 ).


2
За допомогою IE підтримка не надходить від IE-версії, а надходить із базової версії ОС. Vista і вище підтримують SNI. XP ні, тому навіть з IE8 на XP, ви не отримаєте SNI.
Насько

1

Я працюю над тим же питанням. Як мій тест, підтримка IE7 та новіших версій (лише в Win7 та Vista) / Chrome / Firefox / Safari / Opera "Індикація імені сервера". Насправді, якщо браузер використовує Tsl 1.0, він підтримує "Вказівку імені сервера".


0

Я думаю, що ОП запитує, що трапиться, якщо він додасть SSL-серт до IP, який має багато віртуальних хостів. Якщо жоден з інших віртуальних хостів не використовує сервер SSL, тоді він повинен бути в чистоті.


ну я спантеличений питанням. У заголовку Q йдеться про чорний, а вміст - білий.
Іракліс

це білий
Іракліс,


0

Якщо ви спробуєте додати два сертифікати на один і той же IP, всюди буде використано лише сертифікат першого читання. Один IP - один сертифікат SSL.

Якщо ви хочете отримати більше сертифікатів SSL на одному IP- адресі , подумайте про отримання багатодоменного сертифіката (так званий UCC - перевірити його @ godaddy ) або сертифікату підстановки (дорожчого).


Ви маєте на увазі, що сертифікат, який вперше додано в Apache conf, буде використовуватися для обох?
нітини

1
Якщо у вас є два сертифікати - для сайтів A і B, і apache завантажує конфігурацію для хостів у послідовності A.conf, потім B.conf, тоді він буде використовувати сертифікат від A.conf. Або навпаки.
Андрейс Кайніков
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.