Назад | Перейти на главную страницу

Wildcard SSL с виртуальным хостингом на основе имен?

У меня есть два сайта, для которых требуются разные домены, но оба должны использовать один и тот же сервер с Apache httpd, а также использовать SSL. Вот пример:

У каждого домена свой корневой путь к документу. SNI не подходит, но у меня есть SSL-сертификат с подстановочными знаками для * .example.com. Назначение второго IP не вариант.

Как мне настроить Apache для использования подстановочного SSL-сертификата для любого трафика на порту 443, а затем продолжить виртуальный хостинг на основе имени после подтверждения SSL?

В nginx это может быть блок if, основанный на доменном имени и имеющий конфигурацию SSL за пределами этого. Есть ли эквивалент, который будет работать с Apache 2.2?

Редактировать: SNI не является вариантом по запросу моего клиента из-за уменьшения поддержки браузера по сравнению с альтернативой. Я ищу способ обслуживать сертификат с использованием старого стандарта, а затем применять классические определения VHost к порту ssl так же, как они применяются к порту 80.

Если у вас есть ssl-сертификат с подстановочными знаками, это означает, что вы можете использовать этот сертификат в файле конфигурации вашего обе vhosts.

Вы можете просто указать их в файлах конфигурации vhost:

<VirtualHost *:443>
  ServerName www.example.com
  SSLCertificateFile /path/to/file.crt
  SSLCertificateKeyFile /path/to/file.key
  ...
</VirtualHost>
<VirtualHost *:443>
  ServerName beta.example.com
  SSLCertificateFile /path/to/file.crt
  SSLCertificateKeyFile /path/to/file.key
  ...
</VirtualHost>

Не забывайте: идентификация виртуального хоста будет основана на Host: заголовок запроса, а не в SNI. SNI будет использоваться только для идентификации виртуального хоста перед рукопожатие ssl. Совершенно нормально использовать разные vhost в части SNI рукопожатия SSL и в части HTTP, хотя эти необычный запросы вызовут некоторые предупреждения в журнале apache.