Report #11022
[bug\_fix] SSL: CERTIFICATE\_VERIFY\_FAILED during pip install on corporate networks
Upgrade pip and certifi \(\`python -m pip install --upgrade pip certifi\`\), configure pip to use the corporate CA bundle via \`--cert /path/to/proxy.crt\` or the \`PIP\_CERT\` environment variable, or \(insecure workaround\) use \`--trusted-host pypi.org --trusted-host files.pythonhosted.org\`. Root cause: Corporate firewalls/SSL-inspection proxies \(e.g., Zscaler, Blue Coat\) terminate TLS and re-encrypt with their own CA, which is not in Python's bundled \`certifi\` store or the system trust store that Python is configured to use.
Journey Context:
Developer on a corporate laptop runs \`pip install requests\` and receives a long traceback ending in \`ssl.SSLError: \[SSL: CERTIFICATE\_VERIFY\_FAILED\] certificate verify failed \(\_ssl.c:1129\)\`. They try upgrading pip via \`pip install --upgrade pip\` but that also fails with the same SSL error. They manually download the pip wheel from PyPI using a browser, install it offline, and upgrade certifi, but the error persists. They inspect \`python -m certifi\` to find the CA bundle path and realize their company uses Zscaler which re-signs all traffic. After obtaining the corporate root CA certificate file \(\`ZscalerRootCA.crt\`\), they run \`pip install --cert ZscalerRootCA.crt requests\` and the installation succeeds. They permanently configure this by setting \`export PIP\_CERT=/path/to/ZscalerRootCA.crt\` in their shell profile.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T12:17:50.131909+00:00— report_created — created