为子域生成 Let's Encrypt 证书时连接被拒绝

为子域生成 Let's Encrypt 证书时连接被拒绝

我正在尝试向我的 Let's Encrypt 证书添加一个子域,但它给出了Connection refused

我运行的命令是sudo certbot --expand -d sub.domain.com

Certbot failed to authenticate some domains (authenticator: apache). The Certificate Authority reported these problems:
  Domain: sub.domain.com
  Type:   connection
  Detail: xxx.xxx.xxx.xxx: Fetching http://sub.domain.com/.well-known/acme-challenge/jMDxrjAKBYguSgr5_EFp-0R_V9F99Qr-8NVOSPXJQPD: Connection refused

Hint: The Certificate Authority failed to verify the temporary Apache configuration changes made by Certbot. Ensure that the listed domains point to this Apache server and that it is accessible from the internet.

我的子域名是 CNAME(托管在 Cloudflare 上),它指向 Backblaze B2 作为 URL 掩码。这是否可能实现我想要的目标?如果可以,那么添加 URL 掩码的正确方法是什么?

答案1

您不能使用此方法获取 Let's Encrypt 证书,因为您无法控制sub.domain.com当前指向的服务器。

通常,要创建证书,您需要certbot在所需域中的一台机器上运行 - 即一台具有可公开寻址的 IP 地址的机器,您的域将解析该 IP 地址。该机器通常已经运行受支持的 Web 服务器,例如 Apache,您希望将新证书安装到该服务器中。如果它没有运行 Web 服务器,则certbot可以运行自己的迷你 Web 服务器。无论哪种方式,Let's Encrypt 服务器都会尝试连接sub.domain.com并验证它是否正确响应质询。该协议记录在这里

据我所知,您有两种选择:

  1. 使用 Apache 启动服务器,暂时指向sub.domain.com它,运行典型的certbot/Let's Encrypt 流程,然后复制证书及其公钥。获得这些后,您可以关闭服务器并sub.domain.com重新指向 B2。

  2. 使用手动 DNS 挑战。当您使用 运行 certbot 时--preferred-challenges=dns,它会要求您在由您想要颁发证书的主机名组成的域名下放置一个包含特定内容的 TXT DNS 记录,并以 开头_acme-challenge

    就您而言sub.domain.com,区域文件条目看起来类似于:

    _acme-challenge.sub.domain.com. 300 IN TXT "gfj9Xq...Rg85nM"
    

    创建 TXT 记录后,您可能需要等待几分钟才能通过 DNS 系统传播,然后才能继续该certbot过程。

无论哪种情况,您都需要定期更新证书。

相关内容