【问题标题】:Multiple SSL wildcards on 1 IP1 个 IP 上的多个 SSL 通配符
【发布时间】:2017-05-05 11:19:56
【问题描述】:

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

我尝试将两个网站放在一个 vhost 文件中,但没有成功,因此我制作了 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 才能使其工作。

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

在终端输入时出现问题:

a2ensite websiteY.conf

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

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

【问题讨论】:

  • 在终端输入a2ensite websiteY.conf会出现什么问题?
  • 谢谢,我编辑了帖子:“当我这样做时,那个 websiteZ 将失去它的 https 证书,并且会显示一个大红十字,上面写着:不安全!当你点击继续它链接到 websiteY”
  • 当您尝试访问 websiteZ 时,究竟在浏览器的地址栏中输入了什么?
  • www.websiteZ.nl

标签: apache ubuntu sni


【解决方案1】:

当你输入www.websiteZ.nl而没有https时,请求会首先被捕获

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

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

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

【讨论】:

  • 你先生,是个英雄。我不敢相信我错过了这个!它有效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 2019-01-17
  • 2013-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
相关资源
最近更新 更多