將 CA 憑證與 Docker 搭配使用

注意

在正式作業容器中使用中間人 (MITM) CA 憑證時,應遵循最佳實務。如果遭到入侵,攻擊者可能會攔截敏感資料、偽造受信任的服務或執行中間人攻擊。在繼續之前,請諮詢您的安全團隊。

如果貴公司使用檢查 HTTPS 流量的 Proxy,您可能需要將所需getRoot 憑證新增至您的主機電腦和 Docker 容器或映像。這是因為 Docker 及其容器在提取映像或發出網路要求時,需要信任 Proxy 的憑證。

在主機上,新增根憑證可確保任何 Docker 命令 (例如 `docker pull`) 都能正常運作。對於容器,您需要在建置過程中或執行時將根憑證新增至容器的信任存放區。這可確保在容器內執行的應用程式可以透過 Proxy 進行通訊,而不會遇到安全警告或連線失敗。

將 CA 憑證新增至主機

以下章節說明如何在 macOS 或 Windows 主機上安裝 CA 憑證。對於 Linux,請參閱您散佈版本的說明文件。

macOS

  1. 下載 MITM Proxy 軟體的 CA 憑證。
  2. 開啟「鑰匙圈存取」應用程式。
  3. 在鑰匙圈存取中,選取「系統」,然後切換至「憑證」索引標籤。
  4. 將下載的憑證拖放到憑證清單中。如果出現提示,請輸入您的密碼。
  5. 找到新新增的憑證,按兩下它,然後展開「信任」區段。
  6. 針對憑證設定「永遠信任」。如果出現提示,請輸入您的密碼。
  7. 啟動 Docker Desktop 並確認 `docker pull` 可以運作 (假設 Docker Desktop 已設定為使用 MITM Proxy)。

Windows

選擇您是要使用 Microsoft 管理主控台 (MMC) 還是 Web 瀏覽器安裝憑證。


  1. 下載 MITM Proxy 軟體的 CA 憑證。
  2. 開啟 Microsoft 管理主控台 (`mmc.exe`)。
  3. 在 MMC 中新增「憑證嵌入式管理單元」。
    1. 選取「檔案」→「新增/移除嵌入式管理單元」,然後選取「憑證」→「新增 >」。
    2. 選取「電腦帳戶」,然後選取「下一步」。
    3. 選取「本機電腦」,然後選取「完成」。
  4. 匯入 CA 憑證
    1. 從 MMC 中,展開「憑證 (本機電腦)」。
    2. 展開「受信任的根憑證授權單位」區段。
    3. 在「憑證」上按一下滑鼠右鍵,然後選取「所有工作」和「匯入...」。
    4. 按照提示匯入您的 CA 憑證。
  5. 選取「完成」,然後選取「關閉」。
  6. 啟動 Docker Desktop 並確認 `docker pull` 成功 (假設 Docker Desktop 已設定為使用 MITM Proxy 伺服器)。

備註

根據使用的 SDK 和/或執行階段/架構,除了將 CA 憑證新增至作業系統的信任存放區之外,可能還需要執行進一步的步驟。

  1. 下載 MITM Proxy 軟體的 CA 憑證。
  2. 開啟您的 Web 瀏覽器,前往「設定」並開啟「管理憑證」
  3. 選取「受信任的根憑證授權單位」索引標籤。
  4. 選取「匯入」,然後瀏覽至下載的 CA 憑證。
  5. 選取「開啟」,然後選擇「將所有憑證放入下列存放區」。
  6. 確定已選取「受信任的根憑證授權單位」,然後選取「下一步」。
  7. 選取「完成」,然後選取「關閉」。
  8. 啟動 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 容器

  1. 下載 MITM Proxy 軟體的 CA 憑證。

  2. 如果憑證的格式不是 ` .crt`,請將其轉換為 ` .crt` 格式

    範例指令
    $ openssl x509 -in cacert.der -inform DER -out myca.crt
    
  3. 將憑證複製到正在執行的容器中

    $ docker cp myca.crt <containerid>:/tmp
    
  4. 連接到容器

    $ docker exec -it <containerid> sh
    
  5. 確保已安裝 `ca-certificates` 套件(更新憑證所需)

    # apt-get update && apt-get install -y ca-certificates
    
  6. 將憑證複製到 CA 憑證的正確位置

    # cp /tmp/myca.crt /usr/local/share/ca-certificates/root_cert.crt
    
  7. 更新 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.
  8. 驗證容器是否可以透過 MITM 代理進行通訊

    # curl https://example.com
    
    範例輸出
    <!doctype html>
    <html>
    <head>
        <title>Example Domain</title>
    ...