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

VirtualHost не использует правильный файл сертификата SSL

У меня была отличная настройка с моими виртуальными хостами и SSL. Я нашел проблему, мне нужно решение. Проблема в том, что при настройке моих виртуальных хостов и имен серверов директива LAST VirtualHost связывает файл сертификата SSL с ServerName независимо от IP-адреса или ServerAlias.

В этом случае SSL на www.site1.com использует файл сертификата, установленный на последнем VirtualHost; www.site2.com.

Так оно и должно работать? Похоже, это происходит потому, что они оба используют одно и то же имя сервера; но я бы не подумал, что это будет проблемой. Я специально использую одно и то же имя сервера для определенной цели, и я действительно не могу это изменить. Так что мне нужно хорошее исправление для этого. Да, я мог бы купить еще один UCC SSL и использовать их оба, но я уже сделал это; на самом деле это уже SSL UCC. Так получилось, что это два разных SSL UCC.

<VirtualHost 11.22.33.44:80>
 ServerName somename
 ServerAlias www.site1.com
 UseCanonicalName On
 RewriteEngine On
 RewriteOptions Inherit
</VirtualHost>
<VirtualHost 11.22.33.44:443>
 ServerName somename
 ServerAlias www.site1.com
 UseCanonicalName On
 SSLEngine on
 SSLCertificateFile /usr/local/apache/conf/ssl.crt/cert1.crt
 SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/cert1.key
 SSLCertificateChainFile /usr/local/apache/conf/chain/gd_bundle.crt
 RewriteEngine On
 RewriteOptions Inherit
</VirtualHost>

<VirtualHost 55.66.77.88:80>
 ServerName somename
 ServerAlias www.site2.com
 UseCanonicalName On
 RewriteEngine On
 RewriteOptions Inherit
</VirtualHost>
<VirtualHost 55.66.77.88:443>
 ServerName somename
 ServerAlias www.site2.com
 UseCanonicalName On
 SSLEngine on
 SSLCertificateFile /usr/local/apache/conf/ssl.crt/cert2.crt
 SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/cert2.key
 SSLCertificateChainFile /usr/local/apache/conf/chain/gd_bundle.crt
 RewriteEngine On
 RewriteOptions Inherit
</VirtualHost>

Попробуйте добавить эти строки за пределами VirtualHost:

NameVirtualHost 11.22.33.44:443 NameVirtualHost 55.66.77.88:443

Чтобы использовать указание имени сервера, вам потребуется Apache 2.2.12 или новее. Предыдущие версии не поддерживают это расширение SSL.

(Альтернативой является mod_gnutls - однако менее стабильна, чем официальная mod_ssl.)