Watch at Ease看見世界,讀懂生活。

科技 · 實用指南

pip 顯示 CERTIFICATE_VERIFY_FAILED?繞過 TLS 前先證明實際信任路徑

先確認確切的 Python、pip 設定、代理簽發者與 CA 來源,再修復最小的受支援層,並在無繞過下重試原請求。

顯示 Python 程序、pip 設定、TLS 路徑與受支援修復的原創技術示意圖。
原創技術示意圖:變更信任設定前先畫清程序、設定與憑證路徑。 Watch at Ease

pip 的 TLS 失敗不是一個通用指令就能解決。同一錯誤可能來自錯誤的直譯器、隱藏設定、攔截代理、不完整 CA 鏈、舊版後端,或採用不同路徑的隔離建置子程序。安全的第一步是先辨識實際程序與信任來源。

鎖定失敗的程序與請求

用 `python -m pip ...` 重現,記錄直譯器路徑、OpenSSL 與 pip 版本,也記錄確切索引主機和失敗是在主安裝、相依解析或隔離建置。瀏覽器能開啟頁面,不代表 Python 使用同一信任庫或代理。

修改前先揭露設定

執行 `python -m pip config debug`,列出 pip 可見檔案與值,再檢查 CA、代理與索引相關環境變數。記錄時不得公開憑證。使用者、虛擬環境或環境變數可能覆寫原本以為生效的設定。

辨識簽發者與 CA 後端

判斷憑證鏈來自公共 CA、組織代理或異常中繼者。受支援的新版本可透過 truststore 使用系統憑證與 certifi,但實際行為受 pip 和 Python 版本影響;明確 CA 檔也會改變路徑。

採用最小的受支援修復

直譯器錯誤就改用目標直譯器;版本過舊則依維護政策升級。組織攔截 TLS 時,向管理員取得根憑證並加入系統信任庫,或使用核准 CA 檔。錯誤代理或索引設定應從來源修正。

繞過只作診斷

trusted-host 或停用驗證只能顯示邊界在憑證驗證,不能證明伺服器身分,也不會修復信任鏈。不要把它留在全域設定、映像、CI 或複製指令;臨時測試後立即移除,亦不要公開私密材料。

在新程序驗證閉環

開新終端或重建環境,不帶繞過重試相同命令,並再次查看設定。確認目標直譯器與 CA 來源生效,直接與建置相依都能安裝;若只有隔離建置失敗,保留此差異作為程序邊界證據。

顯示重現、檢查、修復與驗證四階段的原創技術示意圖。
原創技術示意圖:繞過只能定位邊界,通過驗證的信任修復才算完成。 Watch at Ease