[英]SSL Certificate on Container Optimized OS (Docker)
問題:當端口 80/443 只能分配給容器優化操作系統中的一台服務器時,如何使 web 流量通過 certbot 服務器運行然后到您的應用程序?
上下文:常規 certbot 安裝不適用於 Google Cloud 的“容器優化操作系統”(它會阻止寫訪問,因此無法執行任何文件)。 所以我使用了來自letsencrypt的cerbot的docker容器,但它需要打開端口80/443,我當前的web應用程序正在使用該端口。
以前我會運行 certbot,然后在我的舊實例上停止服務器,認證將保留 90 天。 但是,運行 certbot docker 容器僅在端口 80/443 上運行時提供 SSL,但一旦停止,SSL 證書將不再有效。
Docker 用於letsencrypt: https://hub.docker.com/r/linuxserver/letsencrypt
Docker web app I want to host on port 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
容器映像中的 Cloud DNS 對 Certbot 使用 DNS 驗證的解決方案。 它將使用服務帳戶憑據在可執行容器中運行certbot-dns-google插件; 這將在主機上的綁定安裝位置配置 LetsEncrypt 證書。
您首先需要使用DNS 管理員角色的服務帳戶憑據將文件添加到您的實例 - 有關更多上下文,請參閱下面的注釋。 在下面的示例命令中,憑證文件是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
這會掛載配置目錄,以便 Certbot 在容器中創建的文件也可以在主機的文件系統中傳播。
-v
credentials-file-mount
這會將來自主機的服務帳戶憑據掛載到容器上。
--dns-google-credentials
path-to-credentials
該容器將使用已安裝的服務帳戶憑據來管理 Cloud DNS 中的更改,以通過 ACME 服務器進行驗證(包括創建和刪除 DNS TXT 記錄)。
--dns-google-propagation-seconds
n
| 可選,默認值:60
--agree-tos
, -m
email
,--non --non-interactive
| 可選的
這些有助於以非交互方式運行容器; 當可能無法進行用戶交互時(例如持續交付),它們特別有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.