如何让 Let's Encrypt 同时为所有域提供挑战文本?

如何让 Let's Encrypt 同时为所有域提供挑战文本?

我正在为我的 Google App Engine 网站使用 Let's Encrypt,因此我仅生成证书,虽然它正常工作,但验证多个域的过程似乎很笨拙。我猜我做错了什么,也许我遗漏了一个可选参数?我正在关注本指南,并以以下形式开始:

sudo ./letsencrypt-auto -a manual certonly

在 GUI 中我输入了两个域

mydomain.com www.mydomain.com

据我所知,从那里开始的过程是......

  1. GUI 提示我同意某件事
  2. 命令行向我展示了 mydomain.com 的质询请求和响应
  3. 我将质询响应代码部署到我的网站
  4. 我按下 Enter 键
  5. 向 mydomain.com 发出质询请求(我可以从我的日志中看到)
  6. GUI 再次提示我同意某件事
  7. 命令行向我展示了 www.mydomain.com 的质询请求和响应
  8. 我将质询响应代码部署到我的网站
  9. 我按下 Enter 键
  10. 向 www.mydomain.com 发出质询请求(我可以从我的日志中看到)

然后我的证书就制作好了,一切正常。但我必须部署两次,分别在步骤 3 和步骤 8。就我而言,www.mydomain.com 和 mydomain.com 由完全相同的请求处理程序提供服务,因此我更希望在步骤 2 中被告知两个域的质询请求/响应文本,这样我就可以同时将两个请求/响应添加到我的代码中,然后部署一次。这个问题(及其变体)随着域数量的增加而变得更糟。

有没有办法让 LetsEncrypt 一次性提供所有质询文本?如果没有,我会将此作为功能请求提交,但现在我假设我只是错过了一些东西。

谢谢

答案1

然后我的证书就制作好了,一切正常。但我必须部署两次,分别在步骤 3 和步骤 8。就我而言,www.mydomain.com 和 mydomain.com 由完全相同的请求处理程序提供服务,因此我更希望在步骤 2 中被告知两个域的质询请求/响应文本,这样我就可以同时将两个请求/响应添加到我的代码中,然后部署一次。这个问题(及其变体)随着域数量的增加而变得更糟。

这就是 Let's Encrypt 的工作方式。Let's Encrypt 证书是 SAN 证书,因此您可以在一个证书中捆绑多个主机名。主机名可以属于同一个域,也可以属于完全不同的域。

无论它们如何关联,Let's Encrypt 验证机制都要求您为系统中的每个主机名创建一个授权(然后使用相应的挑战之一对其进行验证)。

由于该流程设计为完全自动化,因此这通常不是问题。但是,就您而言,您需要手动处理该流程(与 LE 建议的方向相反),因此该流程可能非常冗长且令人厌烦。

有没有办法让 LetsEncrypt 一次性提供所有质询文本?如果没有,我会将此作为功能请求提交,但现在我假设我只是错过了一些东西。

据我所知,没有。

我的网站托管在 Google 应用引擎上,据我所知,这是在 GAE 上执行此操作的唯一方法(基于我所做的研究以及第一段中链接的文章)。但如果有更简单的方法,那么我很想知道!

一种可能的替代方案是使用基于 DNS 的验证。官方 LE 客户端尚不支持它,但您可以使用多个第三方客户端。

我最喜欢的是Go 客户端 LEGO。Lego 内置了对 DNS 提供商的支持。这意味着您可以通过 Lego 申请证书,并轻松使用 Lego 创建验证过程所需的 DNS 记录,而无需手动执行。

对于您来说,这是一个很好的选择,因为它可以与您的 Google App Engine 很好地配合使用(假设您当前的 DNS 提供商支持基于 API 的 DNS 记录更改)。

答案2

使用 DNS 验证。

我可以用这种方式一次创建=数百=个证书,完全没有问题。

相关内容