Apache SSL VirtualHosts на одному IP за допомогою UCC / SAN сертифіката


11

Мені потрібно розмістити кілька віртуальних хостів Apache з SSL з одного IP.

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

Я отримав сертифікат уніфікованого зв'язку (UCC), інакше відомий як сертифікат суб'єкта альтернативного імені (SAN). Це дозволяє мені подавати один і той же сертифікат для кількох доменів.

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

Як мені налаштувати Apache для цього? Я намагався дослідити, як це можна зробити, але все, що я можу знайти, - це цитати, які говорять про те, що це можливо, але немає конкретики:


wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI

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

serverfault.com/questions/48334/apache-virtual-hosts-with-ssl

Між іншим, на одній IP-адресі можна мати декілька захищених SSL іменованих віртуальних хостів - я це роблю на своєму веб-сайті - але він створює всілякі попередження в журналах Apache та попередження про сертифікати у браузері. Я, звичайно, не рекомендував би його для виробничого майданчика, який повинен виглядати чисто. -Давид 31 липня о 4:58

www.digicert.com/subject-alternative-name.htm

Віртуальний хост Кілька SSL-сайтів на одній IP-адресі. Для розміщення декількох сайтів із підтримкою SSL на одному сервері зазвичай потрібна унікальна IP-адреса на одному сайті, але сертифікат з альтернативними іменами тематики може вирішити цю проблему. Microsoft IIS 6 і Apache можуть обидві сайти HTTPS для віртуального хоста за допомогою SSL уніфікованих комунікацій, також відомих як сертифікати SAN.


Будь ласка, допоможіть.

Відповіді:


13

Я перевірив це на моєму апараті apache 2.2.14, і він працював чудово:

Використовуйте директиву NameVirtualHost (до ports.conf):

NameVirtualHost *:443

визначте своїх привидів:

<VirtualHost *:443>
  ServerName www.siteA.com
  DocumentRoot "/opt/apache22/htdocs/siteA"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>
<VirtualHost *:443>
  ServerName www.siteB.com
  DocumentRoot "/opt/apache22/htdocs/siteB"
  SSLCertificateFile "/path/to/my/cert"
  SSLCertificateKeyFile "/path/to/my/key"
</VirtualHost>

Я використовував це посилання як ресурс.


1
Відповідь правильна. Одна річ, яка мене подорожувала на час LOOOONNNNNNGGGGG, це те, що у мене був помилка друку, де я мав <Virtual *:433>... правильний порт - 443! Фу, години мого життя втрачені на цьому ... Сподіваюся, мій біль не був марним, і це допомагає комусь ...
Нік П.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.