pip 和 SSL 证书错误

pip 和 SSL 证书错误

我正在尝试通过 pip 安装一个库。即使使用 --cert,SSL 证书也存在问题。在 Windows 上尝试此操作(pip 版本 1.5.4,python 版本 2.7.6):

pip --cert C:\tmp\cacert.pem install robotframework-archivelibrary --proxy http://myproxy

获取页面 https://pypi.python.org/simple/robotframework-archivelibrary/ 无法获取 URL https://pypi.python.org/simple/robotframework-archivelibrary/:连接错误:[Errno 1] _ssl.c:507:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

有任何想法吗?

答案1

由于我们的公司防火墙拦截了 SSL(即透明 SSL 代理),我也收到了类似的错误消息。我以 .pem 格式导出了对防火墙证书进行签名的根 CA 证书,并将其附加到以下文件中:

C:\Python27\Lib\site-packages\pip\_vendor\requests\cacert.pem

这解决了我的问题。您的问题可能不完全相同,但如果您将正确的 CA 证书放入上述 cacert.pem 中,我相信您可以解决 SSL 证书验证失败的问题。

答案2

由于--cert对您不起作用,可能是您使用了错误的证书文件。

最有可能的是,您使用了一些公司代理,因此您应该通过访问失败的 URL 来导出您的根证书(例如https://pypi.python.org/simple/robotframework-archivelibrary/,参见:如何将远程服务器 SSL 证书本地保存为文件)。

如果在CER格式,转换成PEM

然后使用该 PEM 文件,例如

pip --cert root-cert.pem install robotframework-archivelibrary

也可以看看:pip 安装失败,显示“连接错误:[SSL:CERTIFICATE_VERIFY_FAILED]”

答案3

如果pip抱怨证书错误,则添加一些主机to pip.ini
不幸的是,Win10 上的 Python 3.x 没有任何pip.ini文件,因此您必须powershell/cmd使用以下命令手动创建它:

  • mkdir C:\ProgramData\pip

  • 用记事本创建一个文件C:\ProgramData\pip\pip.ini

      [global]
      trusted-host = pypi.org (new-line)
                     files.pythonhosted.org
    

使用 检查pip config -v list。你应该在最后一行看到以下内容:

global.trusted-host='pypi.org\nfiles.pythonhosted.org'

表示\n应作为条目一部分的新行trusted-host

答案4

我也遇到了同样的问题,这是因为我的防病毒软件(Eset“智能安全”)正在过滤 SSL/TLS。禁用它后一切都正常了。

相关内容