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

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

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

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


Пожалуйста помоги.

Mikuso
источник

Ответы:

13

Я протестировал это на своем экземпляре apache 2.2.14, и он работал нормально:

Используйте директиву NameVirtualHost (для ports.conf):

NameVirtualHost *:443

определите ваши vhosts:

<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
ответ правильный. Одна вещь, которая действительно сбила меня с толку на время LOOOONNNNNGGGGG, была то, что у меня была опечатка, где я имел <Virtual *:433>... правильный порт - 443! Тьфу, часы моей жизни потерялись на этом ... Надеюсь, моя боль не прошла даром, и это кому-то помогает ...
Ник П.