Апач документация httpd говорит, что виртуальные хосты на основе имен не работают с SSL. Но наши сайты работают именно в такой конфигурации!
В site1.conf у нас есть
<VirtualHost *:443>
ServerName site1:443
DocumentRoot /var/www/site1
ErrorLog /var/log/apache2/site1.error.log
TransferLog /var/log/apache2/site1.access.log
SSLEngine on
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP
SSLCertificateFile /etc/apache2/keys/trac.crt
SSLCertificateKeyFile /etc/apache2/keys/trac.key
SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown
...
</VirtualHost>
Другой сайт почти идентичен, но с site2 вместо site1. Насколько я могу судить, нам либо очень повезло, либо я не понимаю документацию. Два URL-адреса работают, и они обслуживают разный контент через HTTPS.
Может кто-нибудь пролить свет?
Более свежие версии поддержки apache Индикация имени сервера (SNI), что позволяет использовать виртуальный хостинг HTTPS на основе имен. Для работы SNI программное обеспечение клиентского браузера должно поддерживать SNI, но, к сожалению, не все браузеры (особенно Internet Explorer в WinXP).
SSL будет работать, но если у вас нет сертификата с подстановочными знаками и оба сайта охвачены этим сертификатом, клиенту будет предложено, что имя сертификата не соответствует одному или обоим сайтам.
Если вы используете самозаверяющие сертификаты, то это обычно спорный вопрос, потому что клиенту все равно будет предложено об этом.
ВОЗМОЖНО обслуживать несколько защищенных NameVirtualHosts с одного и того же сервера apache, либо предоставляя им отдельные IP-адреса, либо используя групповой сертификат, когда они совместно используют домены.