簡體   English   中英

SSL 容器優化操作系統(Docker)證書

[英]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 | 可選的

    這些有助於以非交互方式運行容器; 當可能無法進行用戶交互時(例如持續交付),它們特別有用。

  • Certbot 命令行參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM