容器优化的 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).
-
问题:当端口 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).