子域名使用通配符 SSL 证书进行 SSL

子域名使用通配符 SSL 证书进行 SSL

我在我的 sites-available 文件夹中设置了一个子域名,启用它并完成了所有需要的操作,以便它重新启动 apache2 时不会出现任何错误(更改默认:443 到 *:443,将 NameVirtualHost *:443 添加到 ports.conf 等)。

子域名现在运行正常,但当我尝试使用主域名上的 SSL 访问任何页面时,它会跳转到我的错误页面。它似乎接管了所有 SSL。

例如:subdomain.domain.com

Apache2 错误:文件不存在:/var/www/subdomain/foldername

它不应该从子域文件夹读取。我猜这是我下面的虚拟主机设置中的问题:

    <VirtualHost *:443>
    ServerName subdomain.domain.com
    ServerAlias subdomain.domain.com
    VirtualDocumentRoot /var/www/subdomain/
    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/domain.com.crt
    SSLCertificateKeyFile /etc/apache2/ssl/domain.com.key
    SSLCertificateChainFile /etc/apache2/ssl/domain.com.crt
    SSLCACertificateFile /etc/apache2/ssl/bundle.crt
    SSLProtocol all
    SSLCipherSuite HIGH:MEDIUM
    </VirtualHost>

apachectl -S的结果:

    VirtualHost configuration:
    wildcard NameVirtualHosts and _default_ servers:
    *:443    is a NameVirtualHost
             default server subdomain.domain.com (/etc/apache2/sites-enabled/subdomain.domain.com:1)
             port 443 namevhost subdomain.domain.com (/etc/apache2/sites-enabled/subdomain.domain.com:1)
             port 443 namevhost *.domain.com (/etc/apache2/sites-enabled/default-ssl:2)
    *:80     is a NameVirtualHost
             default server production1 (/etc/apache2/sites-enabled/000-default:1)
             port 80 namevhost production1 (/etc/apache2/sites-enabled/000-default:1)
    Syntax OK

答案1

SSL 虚拟主机配置与普通配置一样;它们不会从相应的非 SSL vhost 配置或任何内容继承指令。

由于您已指定指令VirtualDocumentRoot /var/www/subdomain/,apache 将使用此文件夹来处理与此 vhost 匹配的所有请求(例如subdomain.domain.com)。您应该将其更改为您希望它用于 webroot 的实际位置。

ServerAlias另外,有一点:如果它是,则不需要在中指定名称ServerName

您正在使用通配符 SSL 与这个问题没有特别的关系。

此外,请确保您拥有的每个站点都有自己的 SSL 虚拟主机配置,与明文配置并行。请注意,如果客户端不支持 SNI 但使用 SSL,则将使用端口 443(按字母顺序排列的搜索路径上的第一个)的默认虚拟主机。

查看您的apachectl -S输出,您需要做一些事情:

  • 重命名默认 SSL vhost 配置文件,使其按字母顺序排在所有其他文件之前
  • 从默认 SSL 虚拟主机中删除通配符ServerNameServerAlias并将其替换为domain.comwww.domain.com如果您愿意)。由于它是默认的,它将匹配所有未匹配的子域;通配符将使其匹配所有内容,以便subdomain.domain.com也匹配默认虚拟主机。

相关内容