Кілька SSL-сертифікатів на одному сервері


1

Ми розміщуємо два веб-сайти на нашому досить крихітному, але відданому виробничому сервері. Для обох веб-сайтів потрібна автентифікація SSL.

Отже, у нас встановлені віртуальні хости для обох. Вони посилаються на власні файли domain.key, domain.crt і domain.intermediate.crt.

Кожен файл CSR та сертифікатів для кожного сайту був налаштований за допомогою власної унікальної інформації, і між ними нічого не можна поділити (крім самого сервера)

Однак, на яке символічне посилання на сайт (встановлений в / etc / apache2 / включено сайти) є посиланням першим, це посилання на сертифікат сайту, навіть якщо ми відвідуємо другий сайт.

Так, наприклад, припустимо, що наші компанії - Cadbury і Nestle. Ми налаштовуємо обидва сайти з власними сертифікатами, але створюємо символічне посилання Cadbury у папці з підтримкою сайту apache, а потім Nestle's.

Ви можете відвідати Nestle чудово, але якщо ви перевірите встановлення сертифіката, він посилається на сертифікат Cadbury.

Ми розміщуємо ці веб-сайти на спеціалізованому сервері Ubuntu 12.04.3 LTS. Обидва сертифікати надає Thawte.com.

Я натрапив на кілька потенційних рішень, які не мали успіху. Я сподіваюся, що хтось інший має гідне рішення?

Дякую

Редагувати: Єдиним іншим рішенням, яке, здається, мало успіху для деяких людей, є використання SNI з Apache. Однак налаштування тут, схоже, зовсім не збігаються з нашими.


Ви на 100% правильні. Я редагував питання. Я спробував SNI варіант, але це, здається, не працює взагалі.
Кайл О'Брайен

Але насправді я думаю, що я повинен бути відкритим для того, щоб слухати це знову, якщо я не вперше щось реалізував правильно
Кайл О'Брайен

Без SNI ви можете мати тільки один сертифікат за IP - адреса, так як веб - сервер не може знати , який сайт ви отримуєте до після обміну сертифіката має місце. Тому він використовує перше, що є. Ви не згадуєте у своєму запитанні, скільки у вас IP-адрес.
Пол

@Paul - так, здається, тут мало вирішення. Ми технічно маємо 5. У той час, коли я це розмістив, я не був настільки впевнений, що хотів би використати одну з них на досить низькому бюджетному клієнті. Зважаючи на те, з точки зору академічної точки зору ви здаєтеся правильним. Єдиний спосіб - це хороша реалізація СНР. Чи можете ви скласти відповідь, використовуючи SNI та інформацію в моєму запитанні, і я прийму її як правильну. Спасибі
Кайл О'Брайен

Будьте попереджені, ви все ще можете побачити кількість клієнтів, які підключаються, які не підтримують SNI. Наприклад, Internet Explorer у Windows XP.
Девід Шварц

Відповіді:


3

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

Незважаючи на те, що ви вводите ім’я сервера https://google.com у свій веб-переглядач, ім'я вирішується на його IP-адресу, а на IP-адресу починається сеанс SSL. Конкретна URL-адреса, на яку ми орієнтуємось, не може бути частиною стандартного рукостискання SSL, інакше це буде видно для підслуховувачів. Таким чином, веб-сервер не може знати, який сертифікат використовувати, і тому, як правило, використовує перший.

SNI - це розширення до TLS / SSL, яке дозволяє включати ім'я хоста в сесійні переговори. Цього дня широко підтримують клієнти та сервери. Хоча це робить ім'я хоста видимим для підслуховувачів, воно вважається прийнятним, оскільки воно включає лише ім'я хоста, а не повну URL-адресу (яка може містити конфіденційну інформацію), і ви, швидше за все, зробили незашифрований пошук DNS для імені хоста безпосередньо перед початком Сеанс SSL.

У Apache є три кроки:

  1. Не використовуйте веб-сайт за замовчуванням на 443
  2. Використовуйте директиви ServerName у своєму: 443 віртуальному визначенні хоста
  3. Переконайтеся, що Apache створений за допомогою недавнього OpenSSL

Ви отримаєте повідомлення в журналах помилок Apache, якщо воно не створене з підтримкою SNI:

 You should not use name-based virtual hosts in conjunction with SSL!!

Якщо все добре, ви отримаєте в журналах таке:

 [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)

1
+1 за "якщо все добре"
ruuter
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.