我使用独立方法为多个域创建了多个 SSL 证书。我只对证书感兴趣,不需要服务器集成。
它们现在需要续订。因此,我运行了:
certbot -d example.com --manual --preferred-challenges dns certonly
并按照每个域的说明进行操作(为每个域添加所需的 DNS 条目)。这样,我就不必停止服务器并获取新证书。
我(模糊地)理解是,目前没有使用 DNS 质询自动更新证书的方法。或者您无法使用“手动”方法自动更新证书?
无论如何,我写了这个脚本:
#!/bin/bash
for i in renewal/*;do
n=${i:8:-5};
echo $n;
# echo "\n" | certbot --text --agree-tos -d $n --manual --preferred-challenges dns --expand --renew-by-default --manual-public-ip-logging-ok certonly;
done
此时,renewal
目录中的所有域均具有:
验证器 = 手动
和:
pref_challs = dns-01
问题:
现在...当我运行“certbot renew”时,它会在不使用我的脚本的情况下自动更新所有这些吗?
首先,如何实际使用 DNS 质询来创建新证书?
答案1
更新后的答案(请参阅下面的原始答案)
在我最初的回答中,我重点强调了使用该命令时不需要您提供的脚本renew
。但是,我不确定该renew
命令是否真的适用于这种情况。
正如 cdhowie 和 bobpaul 在评论中所说:certbot renew
是一种非交互模式,与 dns 挑战结合使用时,需要您通过参数提供脚本--manual-auth-hook
。该脚本必须能够设置TXT
记录。您还可以通过--manual-cleanup-hook
参数提供另一个脚本,以便事后进行清理。
如果您提供这些参数,整个过程将自动运行,无需任何交互。
如果不提供这些参数,certbot 将失败:
/opt/certbot # certbot renew --force-renewal
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/foobar.w9f.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Could not choose appropriate plugin: The manual plugin is not working; there may be problems with your existing configuration.
The error was: PluginError('An authentication script must be provided with --manual-auth-hook when using the manual plugin non-interactively.',)
如果您想通过手动模式更新证书,则必须重新运行用于获取证书的命令。在这种情况下,您的脚本是一个不错的选择,因为该命令不会查看当前的证书/配置,而是要求您通过参数或交互模式certonly
提供域名。-d
当我运行“certbot renew”时,它会自动更新所有这些而不使用我的脚本吗?
TL;DR:是的,应该。
让我们来看看certbot 文档:
从 0.10.0 版本开始,Certbot 支持更新操作,以检查所有已安装的证书是否即将到期并尝试更新它们。最简单的形式是
certbot 更新
到目前为止,一切都很好。
此命令尝试更新任何先前获得的、将在 30 天内过期的证书。
这应该可以回答你的问题。注意:我不知道如何certbot
处理将证书移动到不同目录的情况。
在同一段落的后面:
除非您指定其他插件或选项,否则将使用证书最初颁发时使用的相同插件和选项进行续订尝试。与 不同
certonly
,renew
它作用于多个证书,并且始终考虑每个证书是否即将到期。
所以,是的;certbot
应该在没有脚本帮助的情况下更新所有证书。
首先,我该如何使用 DNS 质询来实际创建新证书?
您在帖子开头发布的命令有什么问题?
certbot -d example.com --manual --preferred-challenges dns certonly
将使用 dns 质询获取 example.com 的证书。
创建证书的步骤如下:
- 运行
certbot
您发布的命令 - 等待命令显示 DNS TXT 记录
- 创建 TXT 记录
- 继续
certbot
命令 - 获取指定域的证书
- 删除 TXT 记录(因为您只需要它来创建,并需要一个新的来续订)