使用certbot和DNS挑战续订域名


9

我使用独立方法为多个域创建了多个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更新”时,它会自动更新所有它们,而无需使用我的脚本吗?

  • 我实际上如何使用DNS挑战开始创建新证书?

Answers:


4

更新的答案(请参阅下面的原始答案)

在我的原始答案中,我着眼于以下事实:使用该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提供商


太棒了,它会在几个月后通知您!
Merc


是的,因此通常不使用--manual。整个目的--manual是强制进行交互模式。但是您可以不使用certonly--manual选项而使用DNS插件(例如aws或digitalocean),它们会在90天之前自动更新。
bobpaul

感谢您的输入,我已经更新了答案。
马尔特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.