Відповіді:
Я думаю, що це гарна ідея, як пояснити, яка проблема насправді у віртуальних хостах та 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.
Реальне рішення цієї проблеми - "Вказівка імені сервера":
http://en.wikipedia.org/wiki/Server_Name_Indication
Це тільки починає розгортатися на сервери та веб-клієнтів, тому це насправді не те, що ви можете використовувати зараз, але, сподіваємось, через кілька років це не буде настільки великою проблемою.
Проблема полягає в тому, що сертифікат SSL прив’язаний до IP-адреси, а не до імені хоста. Коли з'єднання надходить на IP-адресу для HTTPS-запиту, першою дією є встановлення зв'язку SSL, передаючи сертифікат сервера та / або сертифікат клієнта. Під час цього етапу рукостискання з'єднання сервер Apache не може дізнатися, для чого потрібний запит. Для трафіку HTTP (не-SSL) це відрізняється, оскільки після встановлення з'єднання сервер Apache може визначити віртуальну конфігурацію хоста, яку використовувати, якщо клієнт надсилає Host
заголовок або передає його першому налаштованому віртуальному хосту.
Якщо у вас було декілька віртуальних хостів під одним доменом, ви могли встановити один сертифікат підстановки на IP-адресу та мати кілька віртуальних хостів з різними іменами серверів; однак, якщо ці імена серверів не мають одного імені домену, вони створювали б помилки сервера клієнта. Це буде працювати, оскільки сертифікат підстановки буде дійсним для всіх імен хостів під цим доменним іменем. Вам знадобиться ще одна IP-адреса, якщо доменні імена будуть іншими, оскільки перший сертифікат, визначений для цієї IP-адреси, буде представлений для підключення клієнтів.
Це може бути додано в один єдиний сертифікат ssl як SAN (Subject Alternative Name). З мого досвіду мені довелося попросити сертифікат sll організації. я використав глобальний знак.
Власне, за допомогою сучасного програмного забезпечення ви МОЖЕТЕ обслуговувати декілька 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 ).
Я думаю, що ОП запитує, що трапиться, якщо він додасть SSL-серт до IP, який має багато віртуальних хостів. Якщо жоден з інших віртуальних хостів не використовує сервер SSL, тоді він повинен бути в чистоті.
Сертифікат UC - це безперечно шлях: http://www.sslshopper.com/unified-communications-uc-ssl-certificates.html
Якщо ви спробуєте додати два сертифікати на один і той же IP, всюди буде використано лише сертифікат першого читання. Один IP - один сертифікат SSL.
Якщо ви хочете отримати більше сертифікатів SSL на одному IP- адресі , подумайте про отримання багатодоменного сертифіката (так званий UCC - перевірити його @ godaddy ) або сертифікату підстановки (дорожчого).