我正在尝试为单个域生成证书,但同时为www和非www。
生成证书这就是我现在运行它的方式:
certbot --apache -n -d domain.tld -d www.domain.tld --agree-tos --email mail@domain.com --redirect
但我得到以下内容:
遇到vhost模糊但无法请求用户指导 非交互模式。目前Certbot需要每个vhost都在其中 自己的conf文件,可能需要显式标记vhosts ServerName或ServerAlias目录。
所以我必须在没有-n( - 非交互式)的情况下运行它并选择正确的vhost文件。
有没有办法可以在没有任何提示的情况下为www和非www生成证书?
答案 0 :(得分:0)
有许多可能导致此错误消息。它表示您的vhost配置有问题。 但总结一下最突出的原因:
<VirtualHost >
文件中有多个.conf
.conf
个文件,例如端口80和443,它们没有完全相同的ServerName
和/或ServerAlias
属性ServerName
档案中指定任何.conf
domain.tld
文件中未指定www.domain.tld
和/或.conf
此外,我建议您使用--dry-run
选项运行certbot进行调试。此外,对于cron中的自动续订,有/etc/certbot-auto renew
因此,您可以尝试/etc/certbot-auto renew --dry-run
来获取配置文件中指定的所有域。
提醒:请不要忘记在vhost配置中每次更改后重新启动或重新加载service apache2 restart
或类似的apache
答案 1 :(得分:0)
certbot需要您正确配置虚拟主机。您需要编辑apache2配置文件,以使www.domain.com
是domain.com
的别名
[您需要根据服务器设置来编辑适当的配置文件]
例如我的服务器就是这样
/etc/apache2/sites-available/domain.com.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
ServerName domain.com
ServerAlias www.domain.com
DocumentRoot /var/www/domain.com
ErrorLog /error.log
CustomLog /access.log combined
</VirtualHost>
然后再次运行certbot
sudo certbot --noninteractive --agree-tos --no-eff-email --cert-name domain.com --apache --no-redirect -d domain.com -d www.domain.com -m siteadminsemail@gmail.com
我希望它能对某人有所帮助,它使我困扰了2天,甚至我因尝试使用certbot太多次而被Letencrypt暂时禁止:(
答案 2 :(得分:0)
有什么方法可以在没有任何提示的情况下为 www 和非 www 生成证书吗?
不,目前有not。如果您有复杂的虚拟主机,我不会相信 certbot 能够正确管理它们。这只是感觉不可靠,事实证明,至少目前在实践中是不可靠的。
关于 certbot 的 apache 模块可以可靠地为您的虚拟主机做的唯一一件事是在 single --domain
情况下在全新安装时安装默认 SSL 虚拟主机。对于其他任何使用 certonly
选项,然后放入链接到生成的证书的虚拟主机,这很容易。证书的路径可以由 first 域参数的值或由 --cert-name
参数指定的值可靠地确定。所以:
certbot certonly --apache -n --domains domain.tld,www.domain.tld --agree-tos --email mail@domain.com
然后放入链接到证书路径的虚拟主机。示例默认 SSL 虚拟主机 000-default-ssl.conf
:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# ServerName not required for default.
SSLCertificateFile /etc/letsencrypt/live/domain.tld/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.tld/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
然后重新加载:
a2ensite 000-default-ssl.conf
service apache2 reload