將 CA 憑證與 Docker 搭配使用
注意
在正式作業容器中使用中間人 (MITM) CA 憑證時,應遵循最佳實務。如果遭到入侵,攻擊者可能會攔截敏感資料、偽造受信任的服務或執行中間人攻擊。在繼續之前,請諮詢您的安全團隊。
如果貴公司使用檢查 HTTPS 流量的 Proxy,您可能需要將所需getRoot 憑證新增至您的主機電腦和 Docker 容器或映像。這是因為 Docker 及其容器在提取映像或發出網路要求時,需要信任 Proxy 的憑證。
在主機上,新增根憑證可確保任何 Docker 命令 (例如 `docker pull`) 都能正常運作。對於容器,您需要在建置過程中或執行時將根憑證新增至容器的信任存放區。這可確保在容器內執行的應用程式可以透過 Proxy 進行通訊,而不會遇到安全警告或連線失敗。
將 CA 憑證新增至主機
以下章節說明如何在 macOS 或 Windows 主機上安裝 CA 憑證。對於 Linux,請參閱您散佈版本的說明文件。
macOS
- 下載 MITM Proxy 軟體的 CA 憑證。
- 開啟「鑰匙圈存取」應用程式。
- 在鑰匙圈存取中,選取「系統」,然後切換至「憑證」索引標籤。
- 將下載的憑證拖放到憑證清單中。如果出現提示,請輸入您的密碼。
- 找到新新增的憑證,按兩下它,然後展開「信任」區段。
- 針對憑證設定「永遠信任」。如果出現提示,請輸入您的密碼。
- 啟動 Docker Desktop 並確認 `docker pull` 可以運作 (假設 Docker Desktop 已設定為使用 MITM Proxy)。
Windows
選擇您是要使用 Microsoft 管理主控台 (MMC) 還是 Web 瀏覽器安裝憑證。
- 下載 MITM Proxy 軟體的 CA 憑證。
- 開啟 Microsoft 管理主控台 (`mmc.exe`)。
- 在 MMC 中新增「憑證嵌入式管理單元」。
- 選取「檔案」→「新增/移除嵌入式管理單元」,然後選取「憑證」→「新增 >」。
- 選取「電腦帳戶」,然後選取「下一步」。
- 選取「本機電腦」,然後選取「完成」。
- 匯入 CA 憑證
- 從 MMC 中,展開「憑證 (本機電腦)」。
- 展開「受信任的根憑證授權單位」區段。
- 在「憑證」上按一下滑鼠右鍵,然後選取「所有工作」和「匯入...」。
- 按照提示匯入您的 CA 憑證。
- 選取「完成」,然後選取「關閉」。
- 啟動 Docker Desktop 並確認 `docker pull` 成功 (假設 Docker Desktop 已設定為使用 MITM Proxy 伺服器)。
備註
根據使用的 SDK 和/或執行階段/架構,除了將 CA 憑證新增至作業系統的信任存放區之外,可能還需要執行進一步的步驟。
- 下載 MITM Proxy 軟體的 CA 憑證。
- 開啟您的 Web 瀏覽器,前往「設定」並開啟「管理憑證」
- 選取「受信任的根憑證授權單位」索引標籤。
- 選取「匯入」,然後瀏覽至下載的 CA 憑證。
- 選取「開啟」,然後選擇「將所有憑證放入下列存放區」。
- 確定已選取「受信任的根憑證授權單位」,然後選取「下一步」。
- 選取「完成」,然後選取「關閉」。
- 啟動 Docker Desktop 並確認 `docker pull` 成功 (假設 Docker Desktop 已設定為使用 MITM Proxy 伺服器)。
將 CA 憑證新增至 Linux 映像和容器
如果您需要運行依賴內部或自訂憑證的容器化工作負載,例如在使用企業代理或安全服務的環境中,您必須確保容器信任這些憑證。 如果沒有新增必要的 CA 憑證,容器內的應用程式在嘗試連線到 HTTPS 端點時可能會遇到請求失敗或安全警告。
透過在建置時將 CA 憑證新增到映像檔,您可以確保從映像檔啟動的任何容器都將信任指定的憑證。 這對於需要在生產環境中無縫存取內部 API、資料庫或其他服務的應用程式來說尤其重要。
如果無法重建映像檔,您可以改為直接將憑證新增到容器。 但是,如果容器被銷毀或重建,在執行階段新增的憑證將不會保留,因此此方法通常用於臨時修復或測試情境。
將憑證新增至映像
備註
以下指令適用於 Ubuntu 基礎映像檔。 如果您的建置使用不同的 Linux 發行版本,請使用等效的套件管理指令(`apt-get`、`update-ca-certificates` 等)。
若要在建置容器映像檔時將 CA 憑證新增至其中,請將以下指示新增至您的 Dockerfile。
# Install the ca-certificate package
RUN apt-get update && apt-get install -y ca-certificates
# Copy the CA certificate from the context to the build container
COPY your_certificate.crt /usr/local/share/ca-certificates/
# Update the CA certificates in the container
RUN update-ca-certificates
將憑證新增至容器
備註
以下指令適用於基於 Ubuntu 的容器。 如果您的容器使用不同的 Linux 發行版本,請使用等效的套件管理指令(`apt-get`、`update-ca-certificates` 等)。
若要將 CA 憑證新增到正在執行的 Linux 容器
下載 MITM Proxy 軟體的 CA 憑證。
如果憑證的格式不是 ` .crt`,請將其轉換為 ` .crt` 格式
範例指令$ openssl x509 -in cacert.der -inform DER -out myca.crt
將憑證複製到正在執行的容器中
$ docker cp myca.crt <containerid>:/tmp
連接到容器
$ docker exec -it <containerid> sh
確保已安裝 `ca-certificates` 套件(更新憑證所需)
# apt-get update && apt-get install -y ca-certificates
將憑證複製到 CA 憑證的正確位置
# cp /tmp/myca.crt /usr/local/share/ca-certificates/root_cert.crt
更新 CA 憑證
# update-ca-certificates
範例輸出Updating certificates in /etc/ssl/certs... rehash: warning: skipping ca-certificates.crt, it does not contain exactly one certificate or CRL 1 added, 0 removed; done.
驗證容器是否可以透過 MITM 代理進行通訊
# curl https://example.com
範例輸出<!doctype html> <html> <head> <title>Example Domain</title> ...