1个IP上有多个SSL通配符

时间:2017-05-05 11:19:56

标签: apache ubuntu sni

目前,我的服务器在https / ssl上运行了1个网站。问题是,当我启用第二个虚拟主机时,也使用https / ssl,我运行的第一个网站现在正在使用新网站的ssl证书。

我已经尝试将这两个网站放在一个vhost文件中,没有用,所以我改为制作了2个单独的文件。

以下是我的vhost配置文件:

(因为他们所处的命令,将网站命名为z网站和网站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才能使它工作。

服务器正在使用Ubuntu 16.04.2的AWS ece2上运行

当我输入终端时出现问题:

a2ensite websiteY.conf

当我这样做时,Z会丢失它的https证书,并会显示一个大红十字架,上面写着:不安全!当您单击继续时,它链接到websiteY

我有点选择,有人可以帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

当您输入www.websiteZ.nl而没有https时,请求将首先被

捕获
<VirtualHost *:80>
ServerAlias *.websiteZ.nl
Redirect 301 / https://websiteZ.nl
</VirtualHost>

因此重定向到https://websiteZ.nl

由于您的:443个虚拟主机都没有ServerNameServerAlias配置websiteZ.nl,因此将使用按字母顺序排列的第一个.conf文件中的一个,即在这种情况下,具有websiteY证书的那个。