在 Docker 中使用 CA 憑證
注意在生產環境容器中使用中間人 (MITM) CA 憑證時,應遵循最佳實作。若遭入侵,攻擊者可能會攔截敏感資料、偽造受信任服務或執行中間人攻擊。請在執行前諮詢您的安全性團隊。
若貴公司使用會檢查 HTTPS 流量的代理伺服器,您可能需要將必要的根憑證新增至主機與 Docker 容器或映像檔中。這是因為 Docker 及其容器在提取映像檔或進行網路請求時,必須信任該代理伺服器的憑證。
在主機上,新增根憑證可確保所有 Docker 指令(例如 docker pull)皆能正常運作。對於容器,您需要在建置過程或執行階段將根憑證新增至容器的信任存放區。這可確保在容器內運行的應用程式能夠透過代理伺服器進行通訊,而不會遇到安全性警告或連線失敗。
將 CA 憑證新增至主機
下列章節說明如何將 CA 憑證安裝至您的 macOS 或 Windows 主機。關於 Linux,請參閱您發行版的說明文件。
macOS
- 下載適用於您的 MITM 代理軟體的 CA 憑證。
- 開啟鑰匙圈存取 (Keychain Access) 應用程式。
- 在鑰匙圈存取中,選擇系統 (System),然後切換至憑證 (Certificates) 標籤頁。
- 將下載的憑證拖放至憑證列表中。若系統提示,請輸入您的密碼。
- 找到剛新增的憑證,按兩下並展開信任 (Trust) 區段。
- 將憑證設為永遠信任 (Always Trust)。若系統提示,請輸入您的密碼。
- 啟動 Docker Desktop 並驗證
docker pull是否運作正常(前提是 Docker Desktop 已設定為使用該 MITM 代理)。
Windows
選擇您要透過 Microsoft 管理主控台 (MMC) 還是網頁瀏覽器安裝憑證。
- 下載 MITM 代理軟體的 CA 憑證。
- 開啟 Microsoft 管理主控台 (
mmc.exe)。 - 在 MMC 中新增憑證嵌入式管理單元 (Certificates Snap-In)。
- 選擇檔案 (File) → 新增/移除嵌入式管理單元 (Add/Remove Snap-in),然後選擇憑證 (Certificates) → 新增 >。
- 選擇電腦帳戶 (Computer Account),然後按下一步。
- 選擇本機電腦 (Local computer),然後按完成。
- 匯入 CA 憑證
- 在 MMC 中,展開憑證 (本機電腦)。
- 展開受信任的根憑證授權單位 (Trusted Root Certification Authorities) 區段。
- 以右鍵點擊憑證,選擇所有工作與匯入…。
- 依照提示匯入您的 CA 憑證。
- 選擇完成,然後按關閉。
- 啟動 Docker Desktop 並驗證
docker pull是否成功(前提是 Docker Desktop 已設定為使用該 MITM 代理伺服器)。
注意根據所使用的 SDK 和/或執行階段/框架,除了將 CA 憑證新增至作業系統的信任存放區外,可能還需要額外的步驟。
- 下載適用於您的 MITM 代理軟體的 CA 憑證。
- 開啟您的網頁瀏覽器,前往設定並開啟管理憑證。
- 選擇受信任的根憑證授權單位標籤頁。
- 選擇匯入,然後瀏覽並選取下載的 CA 憑證。
- 選擇開啟,然後選擇將所有的憑證放入下列存放區。
- 確保已選取受信任的根憑證授權單位,然後選擇下一步。
- 選擇完成,然後按關閉。
- 啟動 Docker Desktop 並驗證
docker pull是否成功(前提是 Docker Desktop 已設定為使用該 MITM 代理伺服器)。
將 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 代理軟體的 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> ...