Несколько подстановочных знаков 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.

Другие вопросы по тегам