接公司内部 pypi 之后 pip install 报 SSLError: certificate verify failed: unable to get local issuer certificate。同一个地址在浏览器里打开是正常的。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
pip config set global.cert /etc/ssl/certs/corp-ca.pem pip config set global.index-url https://pypi.corp.local/simple pip config list
私有源用的是企业自签 CA,系统信任库和 certifi 的证书包都不认它。浏览器走自己的信任链,pip 用的是 requests 加 certifi,两边不是一套。这一点先确认清楚,后面就不用反复试。
「pip 私有源证书」这类改动最怕改一半,回滚脚本先准备好,再动生产。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。
具体做法是,拿到企业根证书的 pem 文件 放到固定路径随镜像一起分发;用 pip config 把 global.cert 指到这个 pem 不要只写在一次性命令里;内网地址临时放行可加 trusted-host 但它会跳过校验 只适合过渡;装完用 pip config list 确认配置落在哪个文件。
改完照着核一遍,重新安装不再出现 certificate verify failed 且 pip config list 能看到 cert 和 index-url。
