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

SSL-сертификат Apache используется ветвь на имени хоста

У меня есть массовый виртуальный хостинг, настроенный на одном из наших серверов, что позволяет мне в основном создавать символическую ссылку в определенном каталоге и сразу же иметь этот хост, доступный как по http, так и по https. Это отлично работает, если все имена хостов находятся в одном домене (подстановочный сертификат), но не иначе. Позвольте мне показать вам мой контейнер VirtualHost:

<VirtualHost 1.2.3.4:443>
    SSLEngine on
    SSLProtocol all -SSLv2
    SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW

    ### Mass SSL Vhosts ###
    RewriteEngine on

    #   define two maps: one for fixing the URL and one which defines
    #   the available virtual hosts with their corresponding
    #   DocumentRoot.
    RewriteMap    lowercase    int:tolower

    #   2. make sure we have a Host header
    RewriteCond   %{HTTP_HOST}  !^$

    #   3. lowercase the hostname
    RewriteCond   ${lowercase:%{HTTP_HOST}|NONE}  ^(.+)$

    #   5. finally we can map the URL to its docroot location
    #      and remember the virtual host for logging puposes
    RewriteRule ^/(.*)$ /wwwroot/vhosts/%{HTTP_HOST}/$1 [E=VHOST:${lowercase:%{HTTP_HOST}}]

    <Directory "/wwwroot/vhosts/">
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Files ~ "\.(cgi|shtml|phtml|php3?)$">
        SSLOptions +StdEnvVars
    </Files>
    <Directory "/var/www/cgi-bin">
        SSLOptions +StdEnvVars
    </Directory>

    ErrorLog /var/log/httpd/ssl_error_log
    TransferLog /var/log/httpd/ssl_access_log
    LogLevel warn

    SSLCertificateFile /etc/pki/tls/certs/wildcard.foo.com.crt
    SSLCACertificateFile /etc/pki/tls/certs/wildcard.foo.com.intermediate.crt
    SSLCertificateKeyFile /etc/pki/tls/private/www.foo.com.key

    SetEnvIf User-Agent ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0
    CustomLog logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

Эта установка работает в любое время, когда я хочу создать домен something.foo.com. Я просто создаю символическую ссылку в / wwwroot / vhosts на каталог пользователя, и все работает. Теперь я хочу создать домен something.bar.com. Еще раз, я могу просто создать его, бросить и http://something.bar.com буду работать. Однако я не могу работать https://something.bar.com из-за явно определенных сертификатов выше.

Есть ли способ ветвления внутри контейнера VirtualHost для использования разных сертификатов SSL в зависимости от имени хоста?