Я использую Apache2 и именованные виртуальные хосты для обслуживания двух разных доткомов (exampleone.com
и exampletwo.com
) с одного IP-адреса. Один сайт (exampleone.com
должен быть HTTP и HTTPS, а другой (example2.com
) должен обслуживать только HTTP.
Пока что их соответствующие HTTP-сайты работают, как ожидалось, и HTTPS работает для сайта, для которого он предназначен, но когда я перехожу к https://exampletwo.com
Меня обслуживают https://exampleone.com
предупреждения о содержании и безопасности.
Как я могу получить https://exampletwo.com
запросы на отклонение?
<VirtualHost 1.2.3.4:80>
ServerName exampleone.com
ServerAlias *.exampleone.com
DocumentRoot /var/www/exampleone.com
<Directory /var/www/exampleone.com>
Options MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
CustomLog /var/log/apache2/exampleone.log combined
</VirtualHost>
<VirtualHost 1.2.3.4:80>
ServerName exampletwo.com
ServerAlias *.exampletwo.com
DocumentRoot /var/www/exampletwo.com
<Directory /var/www/exampletwo.com>
Options MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
CustomLog /var/log/apache2/exampletwo.log combined
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost 1.2.3.4:443>
ServerAdmin admin@exampleone.com
ServerName exampleone.com
ServerAlias *.exampleone.com
DocumentRoot /var/www/exampleone.com
<Directory /var/www/exampleone.com>
Options MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
CustomLog /var/log/apache2/exampleone-ssl.log combined
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
# A self-signed (snakeoil) certificate can be created by installing
# the ssl-cert package. See
# /usr/share/doc/apache2.2-common/README.Debian.gz for more info.
# If both key and certificate are stored in the same file, only the
# SSLCertificateFile directive is needed.
SSLCertificateFile /etc/ssl/certs/exampleone.com.crt
SSLCertificateKeyFile /etc/ssl/private/exampleone.com.key
</VirtualHost>
</IfModule>
Вы можете включить SNI. Все, что вам нужно сделать, это включить NameVirtualHost *:443
с вашим Listen 443
оператор (в конфигурации ubuntu apache добавьте его в /etc/apache/ports.conf). Затем вы можете настроить второй виртуальный хост SSL и дать им обоим ServerName
.
Примечание: старые браузеры не поддерживают SNI. Например, нет версии IE для Windows XP. В этом случае IP-адрес для каждого ограничения сайта, упомянутого пользователем2299bla, является действительным.
РЕДАКТИРОВАТЬ: как указали другие, посмотрите SNI
Как объяснено Вот, сервер, с которым связываются через https, не может угадать перед отправкой своего сертификата, с каким доменным именем клиент хочет поговорить.
Если http://exampleone.com
обслуживается по https, это означает, что первое, что посетитель получит с этого сервера, это «Привет, мой сертификат действителен для имени http://exampleone.com", даже если ты хочешь http://exampletwo.com
. Таким образом, вы не можете деактивировать https для http://exampletwo.com
, ни настроить перенаправление или что-то еще, что не привело бы к предупреждению для посетителя.
Чтобы решить вашу проблему, вам понадобятся два разных IP-адреса для обслуживания двух ваших доменных имен.