【发布时间】:2020-07-26 14:06:27
【问题描述】:
问题:当端口 80/443 只能分配给 Container Opimized OS 中的一台服务器时,如何让网络流量通过 certbot 服务器然后传输到您的应用程序?
上下文: 常规 certbot 安装不适用于 Google Cloud 的“容器优化操作系统”(它会阻止写访问,因此无法执行任何文件)。所以我使用了一个来自letsencrypt的cerbot docker容器,但它需要打开我当前的网络应用程序正在使用的端口80/443。
以前我会运行 certbot,然后在我的旧实例上停止服务器,认证将保留 90 天。但是,运行 certbot docker 容器仅在端口 80/443 上运行时提供 SSL,但一旦停止,SSL 证书将不再有效。
用于letsencrypt的Docker:https://hub.docker.com/r/linuxserver/letsencrypt
我想在端口 80/443 上托管的 Docker Web 应用程序:https://hub.docker.com/r/lbjay/canvas-docker
Google 容器优化实例信息:https://cloud.google.com/container-optimized-os/docs/concepts/features-and-benefits
【问题讨论】:
-
您可以使用 Get HTTPS for free! 等其他工具颁发证书。另外,你的 HTTP 服务器是什么?你看,如果你正在使用 NGINX,你可以修改你的 SERVER 指令,以便在达到“http://
/.well-known/acme-challenge/”时将流量转发到letsencrypt容器。我的第二个问题是,为什么证书不再有效?这看起来是一种可怕而奇怪的行为。 -
您在 GCP 中使用 Cloud DNS 吗?如果您愿意在官方certbot/dns-google 图像中使用服务帐户公开一些 Cloud DNS 角色,那么有一个干净的解决方案。 (documentation for the plugin)
-
@ArmandoCuevas 非常感谢您的回答。 HTTP 服务器是 apache,它带有 Canvas 应用程序 docker 的图像,它显然应该检查 /etc/apache2 中的文件夹以获取凭据,但该文件夹不存在。但是我还没有尝试过 NGINX。我可以尝试将它安装在 Canvas 应用程序 docker 映像中。原始认证在 90 天后过期。如果不暴露端口 80/443,续订过程将无法运行。
-
@rpatel 是的!我正在使用云 DNS。我安装了 certbot docker 并运行了 /dns-google,但它失败并出现与 google 相关的错误。我可以尝试再次运行它并在此处复制并粘贴错误,因为这样会更明确。
-
我最好的猜测是您的容器正在尝试与 Cloud DNS 交互而没有必要的凭据。我发布了一个答案,其中包含有关如何使用服务帐户凭据运行容器的一些信息
标签: docker google-cloud-platform web-applications port certbot