1 个 IP 上的多个 SSL 通配符

问题描述 投票:0回答:1

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

我尝试将这两个网站放在一个虚拟主机文件中,但没有成功,所以我制作了 2 个单独的文件。

这是我的虚拟主机配置文件:

(将它们命名为 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

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

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

apache ubuntu sni
1个回答
0
投票

当你输入

www.websiteZ.nl
而没有
https
时,请求首先会被

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

因此重定向至

https://websiteZ.nl

由于您的

:443
虚拟主机均未配置
ServerName
ServerAlias
,因此将使用按字母顺序排列的第一个 .conf 文件中的那个,在本例中是带有 websiteY 证书的文件。
    

© www.soinside.com 2019 - 2024. All rights reserved.