容器优化的 SSL 证书 OS (Docker)

SSL Certificate on Container Optimized OS (Docker)

问题:当端口 80/443 只能分配给 Container Opimized OS 中的一个服务器时,您如何使网络流量 运行 通过 certbot 服务器然后到达您的应用程序?

上下文: 常规 certbot 安装不适用于 Google Cloud 的“Container Optimzed OS”(它阻止写访问,因此无法执行任何文件)。所以我使用了来自 letsencrypt 的 docker cerbot 容器,但它需要打开端口 80/443,我当前的网络应用程序正在使用该端口。

以前我会 运行 certbot 然后在我的旧实例上停止服务器并且认证将保留 90 天。然而,运行宁 certbot docker 容器只提供 SSL,而它 运行s 在端口 80/443 上,但一旦停止,SSL 证书就不再有效。

Docker 对于 letsencrypt:https://hub.docker.com/r/linuxserver/letsencrypt

Docker 我想在端口 80/443 上托管的网络应用程序:https://hub.docker.com/r/lbjay/canvas-docker

Google 容器优化实例信息:https://cloud.google.com/container-optimized-os/docs/concepts/features-and-benefits

这是在可执行容器中的 certbot/dns-google container image. It will use service account credentials to run the certbot-dns-google 插件中通过 Cloud DNS 使用 Certbot 的 DNS 验证的解决方案;这将在主机上的绑定安装位置配置 LetsEncrypt 证书。

您首先需要使用 service account credentials for the DNS Administrator role 向您的实例添加一个文件 - 有关更多上下文,请参阅下面的注释。在下面的示例命令中,凭据文件是 dns-svc-account.json(位于调用命令的工作目录中)。

docker run --rm \
    -v /etc/letsencrypt:/etc/letsencrypt:rw \
    -v ${PWD}/dns-svc-acct.json:/var/dns-svc-acct.json \
    certbot/dns-google certonly \
        --dns-google \
        --dns-google-credentials /var/dns-svc-acct.json \
        --dns-google-propagation-seconds 90 \
        --agree-tos -m team@site.com --non-interactive \
        -d site.com

关于标志的一些注意事项:

  • -v config-dir-mount

    This mounts the configuration directory so that the files Certbot creates in the container propagate in the host's filesystem as well.

  • -v credentials-file-mount

    This mounts the service account credentials from the host on the container.

  • --dns-google-credentials path-to-credentials

    The container will use the mounted service account credentials for administering changes in Cloud DNS for validation with the ACME server (involves creating and removing a DNS TXT record).

  • --dns-google-propagation-seconds n | 可选,默认:60

  • --agree-tos, -m email, --non-interactive | 可选

    These can be helpful for running the container non-interactively; they're particularly useful when user interaction might not be possible (e.g. continuous delivery).

  • Certbot command-line reference