2017-02-07 83 views
27

python中的许多操作都需要通过https访问事物。这包括pip安装,或仅使用http.client.HTTPSConnection,或者内部使用这些东西的任何模块或应用程序。Mac OSX python ssl.SSLError:[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败(_ssl.c:749)

如果python是从官方python pkg安装程序安装的,从https://python.org下载,那么它使用的是openssl的内部版本,并且不包含根证书。任何使用SSL连接的结果都会导致此错误:

ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:749) 

如何安装root证书以使上述错误消失?

回答

66

当您运行python安装程序时,它们会向您显示此信息。它也记录在/Applications/Python 3.6/ReadMe.rtf,但它很容易被忽视。

只需浏览到Applications/Python 3.6并双击Install Certificates.command

有一个在这个Python的bug跟踪系统的问题。 http://bugs.python.org/issue29480

+0

是否有一个解决办法,如果一个人没有根访问?谢谢。 –

+0

尝试并像魅力一样工作!非常感谢你! –

+0

我运行了Install Certificates.command文件,但如果我在我的代码中使用https URL(读取内容),错误仍然存​​在(在Py36中)。如果我使用相同的URL字符串减去“s”(例如http),我的代码就可以工作。不幸的是,我需要一些网址的https。对此有何建议? (我也运行“pip3安装 - 升级certifi”,因为我需要Py27和Py36运行) – ultrageek

2

一个便宜的方法是使用python3.5,如果你仍然安装它。

推到PyPI中:

python3.5 setup.py register -r pypitest

python3.5 setup.py sdist upload -r pypitest

似乎很好地工作3.6开箱..

相关问题