HTTPS 證書¶
在版本 1.3 中新增。
預設情況下,pip 將對透過 HTTPS 進行的網路連線執行 SSL 憑證驗證。這些驗證用於防止中間人攻擊套件下載。此驗證不使用系統憑證儲存,而是使用來自 certifi 的綑綁 CA 憑證儲存。
使用特定憑證儲存¶
選項 --cert
(以及對應的環境變數 PIP_CERT
)允許使用者指定 pip 使用不同的憑證儲存/綑綁。也可以使用環境變數 REQUESTS_CA_BUNDLE
或 CURL_CA_BUNDLE
。
使用系統憑證儲存¶
新增於版本 22.2: 實驗支援,位於 --use-feature=truststore
之後。與任何其他 CLI 選項一樣,這可以使用 config 或環境變數在全域啟用。
可以改用系統信任儲存,而不是捆綁的 certifi 憑證來驗證 HTTPS 憑證。此方法通常會支援公司代理憑證,無需其他組態。
要使用系統信任儲存,您需要使用 Python 3.10 或更新版本。
$ python -m pip install SomePackage --use-feature=truststore
[...]
Successfully installed SomePackage
$ python -m pip install SomePackage --use-feature=truststore
[...]
Successfully installed SomePackage
C:> py -m pip install SomePackage --use-feature=truststore
[...]
Successfully installed SomePackage
何時使用¶
當系統已設定 pip 不知悉的客製化憑證鏈時,您應該嘗試使用系統信任儲存。通常,此情況會顯示 SSLCertVerificationError
,訊息為「憑證驗證失敗:無法取得本機簽發者憑證」
$ python -m pip install -U SomePackage
[...]
SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:997)'))) - skipping
$ python -m pip install -U SomePackage
[...]
SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:997)'))) - skipping
C:> py -m pip install -U SomePackage
[...]
SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (\_ssl.c:997)'))) - skipping
這個錯誤表示 OpenSSL 無法找到信任錨點來驗證鏈。改用系統信任儲存,而不是 certifi,可能會解決此問題。
如果您在使用 truststore
功能時遇到 TLS/SSL 錯誤,您應該在 truststore GitHub 錯誤追蹤器 中開啟錯誤,而不是 pip 的錯誤追蹤器。truststore 的維護者將協助診斷並修正錯誤。