你好,
TLS 握手失敗時,最常見的原因確實在於憑證信任鏈或憑證配置不完整。容器在拉取映像檔時,Docker 或其他 runtime 會依賴系統的信任根憑證庫來驗證 Registry 所提供的伺服器憑證。如果該憑證是由內部 CA 簽發,但未正確安裝在所有節點的 Trusted Root Certification Authorities,握手就會中斷。另一個常見問題是憑證本身的 CN/SAN 不匹配 Registry 的 FQDN,導致驗證失敗。
建議先在受影響的節點上使用 openssl s_client -connect registry.domain:443 或 docker login 來捕捉握手過程,確認是鏈條缺失還是名稱不符。如果是信任鏈問題,需要將中繼憑證與根憑證完整安裝到 Windows/Linux 的系統信任庫,並確保 Docker Daemon 也能讀取。若是 CN/SAN 不匹配,則必須重新簽發憑證,確保 Subject Alternative Name 包含 Registry 的實際主機名。
同時檢查 Registry 端的 TLS 設定,確保 tls.crt 與 tls.key 配對正確,並且未過期。若使用反向代理 (如 Nginx/HAProxy),也要確認代理層的憑證配置一致。完成修正後,重新啟動 Docker Daemon 或 Kubernetes Node,並再次測試拉取映像檔。
總結來說,這是憑證信任鏈或憑證配置錯誤導致的 TLS 驗證失敗。逐步檢查 CN/SAN、信任鏈完整性,以及 Registry 端的 TLS 配置,才能恢復容器部署流程。
Domic Vo.