当我运行时certbot review
,出现以下错误。
非交互地使用手动插件时,必须提供带有 --manual-auth-hook 的身份验证脚本。
根据文档,要自动更新通配符证书,我们需要使用 DNS 插件。
我的问题是为什么?为什么 certbot 不能重用初始设置期间创建的 txt 记录?这还不足以验证所有权吗?
尝试了解通配符证书的工作原理。
答案1
验证策略取决于证书颁发者(LE),而不是 Certbot。
使用 Let's Encrypt,域名验证不是永久性的 - 如果已超过 30 天,则即使您使用同一帐户更新同一证书,也需要重新验证域名的所有权。
每个新的验证过程都将使用新的挑战,具体来说避免相同的 DNS 记录被永久重复使用 – 域验证的目的在于证明您现在仍然在其控制之下。
请参阅本主题以获取更多信息:https://community.letsencrypt.org/t/will-renewal-always-require-new-dns-acme-challenge-txt/102820/2
答案2
看看它的实际运作方式,每次颁发(无论是否续订)都会提出新的挑战,这是 Let's Encrypt 的政策,以确保域名所有者的同意实际上是当前的。
虽然 Let's Encrypt 只能提供域验证证书,但在某些领域,他们对域验证的看法似乎比许多传统 CA(销售域验证证书)更为稳健。
我认为这可能是多种理念结合的结果(LE 无论如何都不会通过销售更多证书来赚钱,所以我认为他们有能力承担这些理念),但也是为了表明他们确实认真对待验证,以便首先获得认可,然后留在所有主要操作系统/浏览器供应商的受信任根存储中。
也就是说,Let's Encrypt 的整个基础(以及基于 ACME 的证书颁发)是自动化。按预期使用,首次颁发和续订之间没有实际区别。
整个想法是,如果您使用例如certbot
,那么您在首次申请新证书时就已经指定与您相关的 DNS 插件和必要的插件配置。 certbot
存储颁发的证书的所有参数,然后您可以自动续订任意次数,而无需任何额外的手动工作。
具体来说,关于 DNS 插件,他们有 rfc2136 插件(标准 DNS 动态更新),涵盖您自己运行的典型 DNS 服务器(例如 BIND、PowerDNS、Knot 等)以及许多主要 DNS 服务提供商的 API 插件。
如果您使用其中任何一个,那么应该很简单。