跨服务器的多个 HaProxy 实例上的 LetsEncrypt

LetsEncrypt on multiple HaProxy instances across servers

查看此处的说明:https://certbot.eff.org/lets-encrypt/ubuntubionic-haproxy

我的情况是我有 2 个 HaProxy 实例,每个实例都在不同机器上的 docker 容器中。域名是一样的。这样做是为了冗余目的。

谷歌搜索“多个 letsencrypt”或“多个 certbot”只会找到同时为多个域创建证书的解决方案。

这对子域很有用,但它没有解释如果我有超过 1 个服务器时我应该做什么 运行 haproxy。

运行 certbot 仅在一台服务器上,然后将文件复制过来?如果是这样,如何更新证书?它不能再自动化了吗?

此外,由于 URL,某些子域将转到一个或另一个服务器。但两者都必须能够提供所有网址。

或者这种情况是否需要完全不同的方法?我应该使用手动模式,生成证书,然后手动更新它们吗?

感谢您的帮助。

最终找到了解决方案:您可以使用自定义端口启动 certbot,--http-01-port 您可以在此处阅读:https://eff-certbot.readthedocs.io/en/stable/using.html.

如果您所有的 haproxy 都检测到传入的挑战 URL“/.well-known/acme-challenge”,您可以让它们重定向到那个 host/port 组合。所以所有的挑战最终都会出现在 certbot 上。

然后想办法移动证书。

我建议您使用 getssl,这是一个“简单的”Bash 脚本,注意:

  • 将挑战文件部署到所有需要的节点,部署到正确的位置,甚至重新加载远程节点网络服务器
  • deploy/copy生成的SSL证书文件也发送到远程节点

它可以使用SSH、SFTP 或FTPS 来传输文件。然后,您可以添加一个 cron 作业来每天执行 getssl,它将更新证书并在完成后分发它(配置允许您告诉何时更新证书)。