У меня есть два сайта, для которых требуются разные домены, но оба должны использовать один и тот же сервер с 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.