Кілька доменів з 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.