Несколько подстановочных знаков SSL на 1 IP
В настоящее время мой сервер имеет 1 веб-сайт, работающий по адресу https/ssl. Дело в том, что когда я включаю второй vhost, также с https/ssl, первый веб-сайт, который я запускаю, теперь использует сертификат ssl нового веб-сайта.
Я попытался поместить два веб-сайта в один файл vhost, но ничего не получилось, поэтому вместо этого я создал 2 отдельных файла.
Вот мои файлы конфигурации vhost:
(Называя их websiteZ и website Y из-за алфавитного порядка, в котором они находятся)
vhost текущий работающий сайт.conf
<VirtualHost *:80>
ServerAlias *.websiteZ.nl
Redirect 301 / https://websiteZ.nl
</VirtualHost>
NameVirtualHost *:443
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.websiteZ.nl
DocumentRoot "/var/www/html/websites/websiteZ.nl/public"
<Directory "/var/www/html/websites/websiteZ.nl/public">
Require all granted
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/websiteZ.nl/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/websiteZ.nl/certificate.key
SSLCertificateChainFile /etc/apache2/ssl/websiteZ.nl/cabundle.crt
</VirtualHost>
</IfModule>
новый сайт с ssl.conf
<VirtualHost *:80>
ServerName websiteY.nl
ServerAlias www.websiteY.nl
RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
RewriteRule ^(/(.*))?$ https://%{HTTP_HOST}/$1 [R=301,L]
DocumentRoot "/var/www/html/websites/websiteY.nl/public/"
<Directory "/var/www/html/websites/websiteY.nl/public/">
Require all granted
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName www.websiteY.nl
DocumentRoot "/var/www/html/websites/websiteY.nl/public"
<Directory "/var/www/html/websites/websiteY.nl/public">
Require all granted
Options Includes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
SSLStrictSNIVHostCheck on
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/websiteY.nl/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/websiteY.nl/certificate.key
SSLCertificateChainFile /etc/apache2/ssl/websiteY.nl/cabundle.crt
</VirtualHost>
</IfModule>
ports.conf
NameVirtualHost *:80
NameVirtualHost *:443
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
<IfModule ssl_module>
Listen 443
</IfModule>
<IfModule mod_gnutls.c>
Listen 443
</IfModule>
Я посмотрел SNI, но я думаю, что что-то упустил. Насколько я понимаю, я должен использовать NameVirtualHost, чтобы он работал.
Сервер работает на AWS ece2 с Ubuntu 16.04.2
Проблема возникает, когда я печатаю в терминале:
a2ensite websiteY.conf
Когда я это сделаю, веб-сайт Z потеряет сертификат https и покажет большой красный крест, который говорит: НЕ БЕЗОПАСНО! Когда вы нажимаете, чтобы перейти, это ссылки на сайт Y
У меня нет выбора, кто-нибудь может мне помочь? Спасибо!
1 ответ
Когда вы вводите www.websiteZ.nl
без https
, запрос будет сначала пойман
<VirtualHost *:80>
ServerAlias *.websiteZ.nl
Redirect 301 / https://websiteZ.nl
</VirtualHost>
и, следовательно, перенаправлены на https://websiteZ.nl
Так как никто из ваших :443
Виртуальные хосты не имеют ни ServerName
или же ServerAlias
настроен с websiteZ.nl
затем будет использоваться файл из.conf, который в алфавитном порядке первый, в данном случае это файл с сертификатом websiteY.