Virtualhost1 SSL 影响 Virtualhost2 别名 SSL

Virtualhost1 SSL 影响 Virtualhost2 别名 SSL

我正在从 Virtualhost 加载通配符子域的 SSL 文件,但第二个虚拟主机加载了第一个虚拟主机的 SSL 文件,浏览器报告了无效证书错误

这是配置

    <VirtualHost *:443>
     ServerName cert-1.domain.com 
     ServerAlias cert-1.domain.com,*.net.domain.com 
    DocumentRoot /home/myuser/public_html
     ServerAdmin [email protected]

     UseCanonicalName Off  

   <IfModule mod_suphp.c>
   suPHP_UserGroup myuser myuser
   </IfModule>
   <IfModule suexec_module>
   <IfModule !mod_ruid2.c>
   SuexecUserGroup myuser myuser 
   </IfModule>
   </IfModule>

   <IfModule ssl_module>
   SSLEngine on 
  SSLCertificateFile /etc/letsencrypt/live/cert-1.domain.com/fullchain.pem
   SSLCertificateKeyFile /etc/letsencrypt/live/cert-1.domain.com/privkey.pem
   </IfModule>
   </VirtualHost>





    <VirtualHost *:443>
     ServerName cert-2.domain.com
     ServerAlias cert-2.domain.com,*.org.domain.com 
     DocumentRoot /home/myuser/public_html
     ServerAdmin [email protected]

     UseCanonicalName Off  

     <IfModule mod_suphp.c>
       suPHP_UserGroup myuser myuser
     </IfModule>
     <IfModule suexec_module>
       <IfModule !mod_ruid2.c>
         SuexecUserGroup myuser myuser 
      </IfModule>
     </IfModule>

  <IfModule ssl_module>
   SSLEngine on 
  SSLCertificateFile /etc/letsencrypt/live/cert-2.domain.com-2/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/cert-2.domain.com-2/privkey.pem
   </IfModule> 
   </VirtualHost>

但是当我访问 anything.org.domain.com 时,它会加载第一个虚拟主机的 SSL 文件,而不是第二个虚拟主机的 SSL 文件,

即使我尝试使用不在第一个或第二个虚拟主机中的子域,它仍然会加载第一个虚拟主机 SSL 文件,并且浏览器会抛出无效的 SSL 错误。

我该如何解决这个问题,

谢谢

答案1

服务器别名应该用空格分隔,而不是逗号,因此您的ServerAlias行应该如下所示:

ServerAlias cert-1.domain.com *.net.domain.com

请注意,可以在单个块中给出更多ServerAlias指令,这使得在存在许多别名的情况下配置更具可读性。

如果您请求一个不存在明确配置的主机,Apache 将提供它找到的第一个块(这就是为什么最好在最后一个位置包含一个VirtualHostServerAlias *,以拥有一个“包罗万象”的站点)。

因此,对于您的情况,所有行都ServerAlias不起作用(无论如何都不像您期望的那样),因为您正在为服务器定义一个别名,该服务器的名称为“cert-2.domain.com,*.org.domain.com”,带有逗号、星号等。为此,当您请求“anything.org.domain.com”时,Apache 会提供它遇到的第一个块,因为此主机名未在配置中定义。

相关内容