Python pip install が SSL 証明書エラーで失敗する
社内プロキシや古い Python の同梱証明書が原因で SSL 検証が失敗する。
--trusted-host で逃がすより、まず CA 証明書と Python のバージョンを直す。
#pip#ssl#proxy#certificate
公開: 更新:
要約
SSL: CERTIFICATE_VERIFY_FAILED で pip install が止まる時、安易に --trusted-host で
検証を切ると MITM の温床 になる。
まず社内 CA 証明書 / Python の証明書ストアを正しく使えるように直す。
よくある原因
- 社内プロキシの SSL インスペクション: 企業ネットワークで TLS が再署名されている
- 同梱 CA の期限切れ: 古い Python が古い証明書バンドルを使い続けている
- macOS の証明書未インストール: 公式インストーラ同梱の
Install Certificates.command未実行 - 自己署名の社内ミラー: 社内 PyPI / devpi が独自 CA で署名されている
解決策
1. 社内 CA を環境変数で指定
export REQUESTS_CA_BUNDLE=/etc/ssl/certs/corp-ca.pem
export SSL_CERT_FILE=/etc/ssl/certs/corp-ca.pem
pip install <pkg>社内ヘルプデスクから配布されている CA 証明書ファイルを取得しておく。
2. Python を更新する
# macOS (Homebrew)
brew upgrade python
# Windows
winget upgrade Python.Python.33.6 系は EOL。
証明書バンドルも古いままなので、サポート対象バージョン(3.9 以降)に上げる。
3. macOS 公式インストーラの後処理
/Applications/Python 3.x/Install Certificates.commandこのスクリプトが certifi の証明書を OpenSSL 側に紐付ける。python.org のインストーラを使う場合は必須。
4. pip 設定で恒久化
pip config set global.cert /etc/ssl/certs/corp-ca.pempip config は ~/.config/pip/pip.conf に書き込まれ、毎回の指定が要らなくなる。