pip安装失败,连接错误:证书validation失败(_ssl.c:598)“

我对Python很> pip install linkchecker ,试图在Windows 7上> pip install linkchecker 。一些注意事项:

  • pip安装失败,无论包装。 例如, > pip install scrapy也会导致SSL错误。
  • Python 3.4.1的香草安装包括pip 1.5.6。 我试图做的第一件事是安装linkchecker。 Python 2.7已经安装,它随ArcGIS一起提供。 在安装3.4.1之前, pythonpip在命令行中是不可用的。
  • > pip search linkchecker作品。 也许这是因为点子search不validation网站的SSL证书。
  • 我在公司networking,但我们不通过代理上网。
  • 每家公司计算机(包括我的)都有一个受信任的根证书颁发机构,因为各种原因,包括启用对https://google.com的 TLSstream量监控。 不知道这与它有什么关系。

这里是我的pip.log运行pip install linkchecker后的内容:

 Downloading/unpacking linkchecker Getting page https://pypi.python.org/simple/linkchecker/ Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598) Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker Getting page https://pypi.python.org/simple/ Could not fetch URL https://pypi.python.org/simple/: connection error: HTTPSConnectionPool(host='pypi.python.org', port=443): Max retries exceeded with url: /simple/ (Caused by <class 'http.client.CannotSendRequest'>: Request-sent) Will skip URL https://pypi.python.org/simple/ when looking for download links for linkchecker Cannot fetch index base URL https://pypi.python.org/simple/ URLs to search for versions for linkchecker: * https://pypi.python.org/simple/linkchecker/ Getting page https://pypi.python.org/simple/linkchecker/ Could not fetch URL https://pypi.python.org/simple/linkchecker/: connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598) Will skip URL https://pypi.python.org/simple/linkchecker/ when looking for download links for linkchecker Could not find any downloads that satisfy the requirement linkchecker Cleaning up... Removing temporary dir C:\Users\jcook\AppData\Local\Temp\pip_build_jcook... No distributions at all found for linkchecker Exception information: Traceback (most recent call last): File "C:\Python34\lib\site-packages\pip\basecommand.py", line 122, in main status = self.run(options, args) File "C:\Python34\lib\site-packages\pip\commands\install.py", line 278, in run requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle) File "C:\Python34\lib\site-packages\pip\req.py", line 1177, in prepare_files url = finder.find_requirement(req_to_install, upgrade=self.upgrade) File "C:\Python34\lib\site-packages\pip\index.py", line 277, in find_requirement raise DistributionNotFound('No distributions at all found for %s' % req) pip.exceptions.DistributionNotFound: No distributions at all found for linkchecker 

新答案:

您可以使用index-url忽略https并将http url作为parameter passing,然后将其设置为可信来源。

 pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org <package_name> 

老答案:

大部分答案都可能构成安全问题。

有助于安装大部分python软件包的两种解决方法是:

  • 使用easy_install :如果您真的懒惰,不想浪费太多时间,请使用easy_install <package_name> 。 请注意,一些软件包将不会被发现或将给小错误。
  • 使用Wheel :下载python软件包的wheel并使用pip命令pip install wheel_package_name.whl来安装软件包。

肯尼伯的答案是非常有用的(和伟大!)。
在他的解决scheme中,也许这是最简单的: – --trusted-host

例如,在这种情况下,你可以做

 pip install --trusted-host pypi.python.org linkchecker 

pem文件(或其他任何东西)是不必要的。

你可以用这个参数指定一个证书:

 pip --cert /etc/ssl/certs/FOO_Root_CA.pem install linkchecker 

请参阅: 文档»参考指南»pip

如果指定您的公司的根证书不起作用,也许cURL将工作: http : //curl.haxx.se/ca/cacert.pem

您必须使用PEM文件而不是CRT文件。 如果你有一个CRT文件,你将需要将文件转换为PEM

另请检查: SSL证书validation 。

我find的最直接的方法是下载并使用DigiCert的“DigiCert High Assurance EV Root CA”( https://www.digicert.com/digicert-root-certificates.htm#roots);

您可以访问https://pypi.python.org/ ,通过点击地址栏中的锁图标来validation证书颁发者,或者使用openssl来增加您的geek cred:

 $ openssl s_client -connect pypi.python.org:443 CONNECTED(00000003) depth=1 /C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA verify error:num=20:unable to get local issuer certificate verify return:0 --- Certificate chain 0 s:/businessCategory=Private Organization/1.3.6.1.4.1.311.60.2.1.3=US/1.3.6.1.4.1.311.60.2.1.2=Delaware/serialNumber=3359300/street=16 Allen Rd/postalCode=03894-4801/C=US/ST=NH/L=Wolfeboro,/O=Python Software Foundation/CN=www.python.org i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA 1 s:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV Root CA 

证书链中的最后一个CN值是您需要下载的CA的名称。

为了一次性努力,请执行以下操作:

  1. 从DigiCert下载CRT
  2. 将CRT转换为PEM格式
  3. 将PIP_CERT环境variables导出到PEM文件的path中

(最后一行假定你正在使用bash shell),然后运行pip。

 curl -sO http://cacerts.digicert.com/DigiCertHighAssuranceEVRootCA.crt openssl x509 -inform DES -in DigiCertHighAssuranceEVRootCA.crt -out DigiCertHighAssuranceEVRootCA.pem -text export PIP_CERT=`pwd`/DigiCertHighAssuranceEVRootCA.pem 

为了使这个可重复使用,把DigiCertHighAssuranceEVRootCA.crt放在一个共同的地方,并相应地在你的〜/ .bashrc中导出PIP_CERT。

您有以下可能性来解决CERTIFICATE_VERIFY_FAILED问题:

  • 使用HTTP而不是HTTPS。
  • 使用--cert <trusted.pem>CA_BUNDLEvariables指定备用CA软件包。

    例如,你可以去网页浏览器失败的URL,并将根证书导入你的系统。

  • 运行python -c "import ssl; print(ssl.get_default_verify_paths())"来检查当前的(validation是否存在)。

  • OpenSSL有一对环境( SSL_CERT_DIRSSL_CERT_FILE ),可以用来指定不同的证书数据库PEP-476
  • 使用--trusted-host <hostname>将主机标记为可信。
  • 在Python中,对requests.get使用verify=False (请参阅: SSL Cert Verification )。
  • 使用--proxy <proxy>来避免证书检查。

有关套接字对象的更多信息,请参阅: TLS / SSL封装 – validation证书 。

您可以尝试使用http而不是https来绕过SSL错误。 当然这在安全性方面并不是最佳的 ,但是如果你很着急的话,它应该可以做到这一点:

 pip install --index-url=http://pypi.python.org/simple/ linkchecker 

我最近遇到了这个问题,因为我公司的Web内容filter使用自己的证书颁发机构,以便它可以过滤SSLstream量。 PIP似乎没有在我的情况下使用系统的CA证书,产生你提到的错误。 将PIP降级到版本1.2.1后来出现了自己的问题,所以我回到了Python 3.4附带的原始版本。

我的解决方法很简单:使用easy_install 。 要么它不检查证书(如旧的PIP版本),要么知道使用系统证书,因为它每次都适用于我,我仍然可以使用PIP卸载使用easy_install安装的软件包。

如果这不起作用,您可以访问不存在问题的networking或计算机,则可以始终设置您自己的个人PyPI服务器: 如何在不使用镜像的情况下创build本地pypi存储库索引?

我几乎这样做,直到我尝试使用easy_install作为最后的努力。

我用easy_install安装了pip 1.2.1,并升级到最新版本的pip(当时是6.0.7),可以在我的情况下安装软件包。

 easy_install pip==1.2.1 pip install --upgrade pip 

有相同的问题尝试pip install ftputil与64位Windows 7企业版的ActivePython 2.7.8,ActivePython 3.4.1,和“股票”Python 3.4.2的pip install ftputil 。 所有尝试失败与OP相同的错误。

通过降级到pip 1.2.1解决了Python 3.4.2的问题: easy_install pip==1.2.1 (请参阅https://stackoverflow.com/a/16370731/234235 )。 同样的修复也适用于ActivePython 2.7.8。

2013年3月报告的这个错误仍然存​​在: https : //github.com/pypa/pip/issues/829 。

为了解决sslvalidation问题,

这是我尝试和工作的东西。 当我尝试安装无法正确的软件时,出现错误,所以我把软件包名称放入了。

这告诉pip信任从我们下载的主机pypi.python.org并且信任它与我们的包裹。

pip install –trusted-host pypi.python.org ansible

pip安装–trusted-host pypi.python.org – 升级pip

我通过删除我的点子并安装旧版本的点子来解决这个问题: https : //pypi.python.org/pypi/pip/1.2.1

你可以尝试这个来忽略“https”:

 pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org [your package..] 

要一劳永逸地解决这个问题,你可以validation你有一个pip.conf文件。

这是你的pip.conf应该在哪里,根据文件 :

在Unix上,默认的configuration文件是: $HOME/.config/pip/pip.conf ,它考虑了XDG_CONFIG_HOME环境variables。

在macOS上,configuration文件是$HOME/Library/Application Support/pip/pip.conf

在Windows上,configuration文件是%APPDATA%\pip\pip.ini

你的pip.conf应该是这样的:

 [global] trusted-host = pypi.python.org 

在创buildpip.conf文件后, pip install linkchecker安装了linkchecker而没有发生抱怨。

对我来说这是因为以前我正在运行脚本,其中设置代理(对小提琴手),重新打开控制台或重新启动修复问题。

最近我在Visual Studio 2015中遇到了与python 3.6相同的问题。花费了2天之后,我得到了解决scheme并且对我的工作很好。

我得到下面的错误,而尝试使用点或从Visual Studio安装numpy收集numpy无法获取URL https://pypi.python.org/simple/numpy/ :确认SSL证书有问题:[SSL:CERTIFICATE_VERIFY_FAILED]证书validation失败(_ssl.c:748) – 跳过找不到满足要求numpy的版本(从版本:)找不到匹配的分布numpy

parsing度 :

对于Windows操作系统

  1. 打开 – >“%appdata%”如果不存在,创build“pip”文件夹。
  2. 在pip文件夹中创build“pip.ini”文件。
  3. 编辑文件并写入
    [全球]
    trusted-host = pypi.python.org保存并closures文件。 现在安装使用pip / visual studio它工作正常。

对于我来说,没有任何build议的方法 – 使用证书,HTTP,可信主机。

在我的情况下切换到不同版本的包(paho-mqtt 1.3.1,而不是本例中的paho-mqtt 1.3.0)。

看起来问题是特定于该包版本。

在我的情况下,我观​​察到,安装相关软件包时,PIP失败。 在我的情况下,python热客户端需要位置,这需要pbr。 pbr的安装失败了。 当我安装python-heatclient之前显式安装pbr,它按预期工作。

调用失败的venv/bin/pip install python-heatclient

调用成功

venv/bin/pip install pbr

venv/bin/pip install python-heatclient