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

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

我使用独立方法为多个域创建了多个 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处理将证书移动到不同目录的情况。

在同一段落的后面:

除非您指定其他插件或选项,否则将使用证书最初颁发时使用的相同插件和选项进行续订尝试。与 不同certonlyrenew它作用于多个证书,并且始终考虑每个证书是否即将到期。

所以,是的;certbot应该在没有脚本帮助的情况下更新所有证书。


首先,我该如何使用 DNS 质询来实际创建新证书?

您在帖子开头发布的命令有什么问题? certbot -d example.com --manual --preferred-challenges dns certonly将使用 dns 质询获取 example.com 的证书。

创建证书的步骤如下:

  • 运行certbot您发布的命令
  • 等待命令显示 DNS TXT 记录
  • 创建 TXT 记录
  • 继续certbot命令
  • 获取指定域的证书
  • 删除 TXT 记录(因为您只需要它来创建,并需要一个新的来续订)

如果你想自动化整个过程,你可能需要看看这样的工具乐高支持几个DNS 提供商

相关内容