У меня проблемы с конфигурациями VirtualHost на моем сервере. На моем сервере работает Ubuntu 14.04.5 LTS (GNU / Linux 4.4.0-31-generic x86_64) с Apache / 2.4.7 (Ubuntu).
Я много читал об Apache и SNI из других тем здесь, но не смог решить свою конкретную проблему.
У меня есть несколько VirtualHosts, настроенных из разных доменов, каждый со своими собственными сертификатами SSL, например:
<VirtualHost *:80>
ServerAdmin admin@mydomain.com
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot /home/user/mydomain.com/public_html
ErrorLog /home/user/mydomain.com/logs/error.log
CustomLog /home/user/mydomain.com/logs/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerAdmin admin@mydomain.com
ServerName mydomain.com
ServerAlias www.mydomain.com
DocumentRoot /home/user/mydomain.com/public_html
ErrorLog /home/user/mydomain.com/logs/error.log
CustomLog /home/user/mydomain.com/logs/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/mydomain.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/mydomain.com.key
SSLCACertificateFile /etc/apache2/ssl/mydomain.com.root.crt
SSLCertificateChainFile /etc/apache2/ssl/mydomain.com.chain.crt
</VirtualHost>
<VirtualHost *:80>
ServerAdmin admin@otherdomain.com
ServerName otherdomain.com
ServerAlias www.otherdomain.com
DocumentRoot /home/user/otherdomain.com/public_html
ErrorLog /home/user/otherdomain.com/logs/error.log
CustomLog /home/user/otherdomain.com/logs/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerAdmin admin@otherdomain.com
ServerName otherdomain.com
ServerAlias www.otherdomain.com
DocumentRoot /home/user/otherdomain.com/public_html
ErrorLog /home/user/otherdomain.com/logs/error.log
CustomLog /home/user/otherdomain.com/logs/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/otherdomain.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/otherdomain.com.key
SSLCACertificateFile /etc/apache2/ssl/otherdomain.com.root.crt
SSLCertificateChainFile /etc/apache2/ssl/otherdomain.com.chain.crt
</VirtualHost>
В большинстве случаев это нормально работает для большинства браузеров, однако время от времени на определенных устройствах или в случайное время, когда я пытаюсь перейти на «otherdomain.com», он пытается получить сертификат SSL для «mydomain.com» , что приводит к ошибке фишинга / неверного сертификата.
Я читал, что SNI может быть решением, поэтому я добавил в свою конфигурацию Apache следующее:
<IfModule mod_ssl.c>
NameVirtualHost *:443
Listen 443
</IfModule>
Однако также кажется, что в моей версии Apache (2.4) эта функция была прекращена, что подтверждается всякий раз, когда я перезапускаю Apache:
# service apache2 restart
* Restarting web server apache2
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf:17
Это также не помогло устранить проблему, я все еще получаю эту ошибку. Я могу воспроизводить эту проблему каждый раз, используя старый BlackBerry.
За исключением необходимости получать уникальный IP-адрес для каждого VirtualHost с использованием SSL, каковы мои варианты решения этой проблемы?
Также в моем примере показано только 2 домена, однако на самом деле у меня есть 5 доменов с собственными сертификатами SSL. Все они получают сертификат SSL первого домена, когда я могу воспроизвести проблему.
Очень ценю любую помощь.
Виртуальные хосты на основе имен не прекращаются. В NameVirtualHost
параметр удаляется, потому что он избыточен. Остальная часть конфигурации будет содержать достаточно информации, чтобы Apache знал, нужно ли включать этот параметр или нет.
Кроме того, SNI - это не параметр, который можно включить или выключить на стороне сервера. Либо клиент поддерживает его и отправляет поле SNI в самом первом сообщении, отправленном на сервер, либо клиент не поддерживает его, и сервер ничего не может с этим поделать.
Ваши варианты: