更新的答案(请参阅下面的原始答案)
在我的原始答案中,我着眼于以下事实:使用该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更新”时,它会自动更新所有它们,而无需使用我的脚本吗?
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记录(因为您只需要创建记录,而新记录则需要更新)
如果要自动化该完整过程,则可能需要看一下lego之类的工具,该工具支持多个DNS提供商。