具有虚拟主机子域的 Apache 通配符证书

具有虚拟主机子域的 Apache 通配符证书

几天来,我一直在尝试让我的网站使用 SSL 和子域名。我一直在谷歌上搜索,但毫无结果。

我在 AWS EC2 实例上设置了一个 Web 服务器,运行带有 apache(httpd)的 amazon Linux 2。

我的服务器上目前有一个 letsencrypt 通配符证书。

已启用以下虚拟主机文件(/etc/httpd/sites-enabled):

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    ErrorLog /var/www/example.com/error.log
    CustomLog /var/www/example.com/requests.log combined
    Redirect permanent / https://example.com/
</VirtualHost>

<VirtualHost *:80>
    ServerName subdomain.example.com
    DocumentRoot /var/www/subdomain.example.com
    ErrorLog /var/www/subdomain.example.com/error.log
    CustomLog /var/www/subdomain.example.com/requests.log combined
    Redirect permanent / https://subdomain.example.com/
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com
    ErrorLog /var/www/example.com/error.log
    CustomLog /var/www/example.com/requests.log combined
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>

<VirtualHost *:443>
    ServerName subdomain.example.com
    DocumentRoot /var/www/subdomain.example.com
    ErrorLog /var/www/subdomain.example.com/error.log
    CustomLog /var/www/subdomain.example.com/requests.log combined
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>

如果我去https://example.com我收到证书错误

但如果我去https://subdomain.example.com它运行良好,显示正确的 letsencrypt 证书。

我不明白为什么该证书不适用于域和子域。

有人能帮我看看问题出在哪里吗?

谢谢。

答案1

通配符证书仅适用于一级域名。如果您有host1.domain.tld证书host2.domain.tld,则*.domain.tld可以使用。但同一证书不适用于host2.domain.domain.tld任何domain.tld主机。对于第一台主机,您需要*.domain.domain.tld与第二台主机相同的证书*.tld

您可以做的是使用subdomain.domain.tld(这实际上是主机,而不是域)作为证书中的 CN 和domain.tld备用名称(或任何名称)

答案2

由于 ssl.conf 文件 (/etc/httpd/conf.d/) 中的配置,默认证书文件覆盖了我的证书文件

用我自己的证书文件替换以下两行:SSLCertificateFile /etc/pki/tls/certs/localhost.crt SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

现在一切正常。谢谢大家。

相关内容