Let's Encrypt 通配符证书和 Apache 2 不起作用

Let's Encrypt 通配符证书和 Apache 2 不起作用

我正在尝试在运行 apache2 的 Ubuntu 18.04 服务器上使用 Let's Encrypt 设置通配符证书,用于域 abc.def.com(不是真实域名)和所有子域(*.abc.def.com)

我已成功使用以下命令手动生成证书:

certbot certonly --manual -d abc.def.com -d *.abc.def.com

我按照说明,为 abc.def.com 域等创建了 TXT 记录,并收到证书已成功创建并保存在 /etc/letsencrypt/live/ 中的确认

我修改了站点的 /etc/apache2/sites-enabled/001-abcsite-le-ssl.conf 以确保它引用了 /etc/letsencrypt/live 中的新证书,如下所示:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName abc.def.com

        ServerAdmin [email protected]
        DocumentRoot /var/www/abc

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

SSLCertificateFile /etc/letsencrypt/live/abc.def.net-0001/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/abc.def.net-0001/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>

我重新启动了 apache2 并确认没有报告错误。

service apache2 restart

现在,当我尝试访问https://abc.def.com我收到 SSL_ERROR_BAD_CERT_DOMAIN 错误,提示“此证书仅对 *.abc.def.com 有效”

我不明白为什么,因为我在 certbot 请求中包含了 abc.def.com 和 *.abc.def.com 的选项。

然后,我尝试将我之前生成的非通配符证书(仅适用于 abc.def.com)作为 VirtualHost 配置文件中的另一组 SSLCertificateFile 和 SSLCertificateKeyFile 指令,但没有任何区别。

我究竟做错了什么?

更新:我能够通过设置两个 VirtualHost 部分来强制它使用两个证书工作,如下所示。但如果通配符证书不包含根名称,那么它肯定有问题,对吗?

<VirtualHost *:443>
    ServerName abc.def.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/abc
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLCertificateFile /etc/letsencrypt/live/abc.def.net/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/abc.def.net/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

<VirtualHost *:443>
    ServerName localhost.abc.def.com
    ServerAlias *.abc.def.com
    ServerAdmin [email protected]
    DocumentRoot /var/www/abc
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    SSLCertificateFile /etc/letsencrypt/live/abc.def.net-0001/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/abc.def.net-0001/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

答案1

这看起来不是正确的使用方式-d:应该是-d abc.def.com,*.abc.def.com

相关内容