Certbot 失败。在将替换现有生产服务器的新服务器上启用 Let's Encrypt certbot

Certbot 失败。在将替换现有生产服务器的新服务器上启用 Let's Encrypt certbot

我有一个 nginx Web 服务器,该服务器使用 Let's Encrypt 使用 Certbot 提供的 SSL 证书。例如,此站点可公开访问https://example.com

新服务器
我正在创建一个新的服务器,一旦一切设置并正确部署,它将取代现有的服务器。

我希望它可在https://beta.example.com在设置所有设置时,然后在https://example.com一旦获得批准。

https://beta.example.com现在可以使用,因为没有其他服务器为该子域名的站点提供服务,但只有当我最终更新 DNS 记录时,example.com 才会起作用。

我显然需要现有的 Web 服务器继续运行而不受影响,直到新服务器准备就绪。

如何为新服务器创建 SSL 证书以便其最终接管?

验证域名时出现问题
当我运行 certbot 时,它会尝试访问https://example.com作为验证的一部分,但由于该域指向现有服务器的 IP 地址,因此验证失败。

授权程序失败。example.com (tls-sni-01):urn:acme:error:tls::服务器在域验证期间遇到 TLS 错误::远程错误:tls:握手失败

重要说明:
- 服务器报告了以下错误:

域名:example.com
类型:tls
详细信息:远程错误:tls:握手失败

要修复这些错误,请确保您输入的域名正确,并且该域的 DNS A/AAAA 记录包含正确的 IP 地址。此外,请检查您是否拥有最新的 TLS 配置,以允许服务器与 Certbot 客户端通信。

考虑到我正在尝试做的事情,是否有适当的流程来解决这个问题?

答案1

尝试使用反向代理。在拥有 example.com 的旧服务器上创建两个虚拟主机,并将 beta.example.com 指向那里。具有 beta.examply.com 的虚拟主机应通过 HTTP 将 HTTPS 和反向代理请求剥离到实际服务器。两个虚拟主机将使用相同的证书。所有 Letsencrypt stull 目前都将位于旧服务器上。

准备就绪后,将证书复制到新服务器,更新 DNS 并等待其稳定(至少等待 DNS TTL 秒)。当您看到所有请求都到达新服务器时,您可以逆转一切,或者只是移动 Letsencrypt 内容并完全移至新服务器。

答案2

您不能使用beta.example.com来验证域的 Letsencrypt 证书example.com

您可以从正在运行的服务器复制当前证书文件example.com并将其放置在正在运行的服务器中beta.example.com。如果您使用的是基于 Linux 的系统,则这些文件可以位于/etc/pki/tls/certs/文件夹中。

答案3

除了建议将证书复制到新服务器的其他答案之外,您还应该复制您的 certbot 配置。这将确保您的续订过程继续按预期进行。

对我来说,这些文件在 中/etc/letsencrypt。请确保在复制过程中保留文件权限和符号链接(rsync -a)。

还要记得设置 cronjobs 或任何用于更新证书的工具。切换到新服务器后,您可以使用 测试更新过程certbot renew --dry-run

相关内容