HTTPS証明書¶
バージョン1.3で追加。
デフォルトでは、pipはHTTPS経由で行うネットワーク接続に対してSSL証明書の検証を実行します。これにより、パッケージダウンロードに対する中間者攻撃を防ぐことができます。これはシステム証明書ストアを使用するのではなく、certifiからバンドルされたCA証明書ストアを使用します。
特定の証明書ストアの使用¶
--cert
オプション(および対応するPIP_CERT
環境変数)を使用すると、pipが使用する別の証明書ストア/バンドルを指定できます。REQUESTS_CA_BUNDLE
またはCURL_CA_BUNDLE
環境変数を使用することも可能です。
システム証明書ストアの使用¶
バージョン22.2で追加: --use-feature=truststore
の背後にある実験的なサポート。他のCLIオプションと同様に、これはグローバルに設定または環境変数を使用して有効にできます。
バンドルされた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が認識していないカスタム証明書チェーンがシステムに構成されている場合、システムトラストストアの使用を試みる必要があります。通常、この状況は、「certificate verify failed: unable to get local issuer certificate」というメッセージを含む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エラーが発生した場合は、pipの問題トラッカーではなく、truststoreのGitHub問題トラッカーで問題を開いてください。truststoreのメンテナーが問題の診断と修正に役立ちます。