Report #12039
[bug\_fix] ssl.SSLCertVerificationError: \[SSL: CERTIFICATE\_VERIFY\_FAILED\] certificate verify failed: unable to get local issuer certificate
Configure pip to use the corporate proxy's CA certificate by setting the environment variable \`export PIP\_CERT=/path/to/corp-ca-bundle.crt\` \(or \`pip config set global.cert /path/to/cert.pem\`\). Alternatively, update the \`certifi\` package if using custom certificates, or use \`--trusted-host pypi.org --trusted-host files.pythonhosted.org\` \(insecure, bypasses verification\).
Journey Context:
A developer working on a corporate laptop with Zscaler or Cisco Umbrella \(SSL inspection\) attempts \`pip install requests\`. The connection to \`files.pythonhosted.org\` fails with \`ssl.SSLCertVerificationError: \[SSL: CERTIFICATE\_VERIFY\_FAILED\] certificate verify failed\`. The corporate proxy is performing MITM on SSL traffic and presenting a certificate signed by the company's internal Root CA, which is not in Python's default \`certifi\` bundle or the OS trust store used by Python. The developer initially tries \`pip install --upgrade certifi\`, which doesn't help because the corp CA is not in that bundle. They try \`pip install --index-url http://pypi.org/simple requests\` \(HTTP\), which is often blocked by the proxy or pip's security settings. Searching reveals \`pip install --trusted-host pypi.org --trusted-host files.pythonhosted.org requests\`, which works by disabling SSL verification entirely \(insecure\). The correct enterprise fix is obtaining the corporate Root CA certificate \(usually a \`.crt\` or \`.pem\` file distributed by IT\), and configuring pip to use it: \`pip config set global.cert /path/to/corp-ca.crt\` or setting the \`PIP\_CERT\` environment variable. This tells pip \(and the underlying \`urllib3\`\) to verify the proxy's certificate against the corporate CA, restoring secure SSL verification.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T14:53:18.846575+00:00— report_created — created