如何让easy_install忽略证书
Posted
技术标签:
【中文标题】如何让easy_install忽略证书【英文标题】:How to get easy_install to ignore certifcate 【发布时间】:2015-12-29 21:39:30 【问题描述】:我们的网络安装不是最好的,所以我需要告诉通过 ssl 通信的应用程序忽略证书。必须对 NPM 等做同样的事情。所以现在当我运行时......
$ easy_install pip
...
Download error on https://pypi.python.org/simple/pip/: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) -- Some packages may not be found!
那么我该如何关闭这个验证呢?
附:我知道这是一个安全向量,但请幽默。
【问题讨论】:
您可以检查更新系统根证书是否有帮助,而不是关闭证书验证 - 请参阅python easy_install fails with SSL certificate error for all packages 【参考方案1】:我相信您的 easy_install 最终会转到具有 SSL 帮助程序的 setuptools。在我的 Linux 上,它位于 /usr/lib/python2.7/site-packages/setuptools/ssl_support.py。基本上有两种方法:
我建议获取证书并手动添加它,您会在 ssl_support.py 中找到位置。这些台词引起了我的注意:
cert_paths = """
/etc/pki/tls/certs/ca-bundle.crt
/etc/ssl/certs/ca-certificates.crt
/usr/share/ssl/certs/ca-bundle.crt
/usr/local/share/certs/ca-root.crt
/etc/ssl/cert.pem
/System/Library/OpenSSL/certs/cert.pem
""".strip().split()
只需将您的证书附加到其中任何一个。请参阅此处如何使用 openssl s_client 获取证书:Using openssl to get the certificate from a server
更进一步,您可以在 setuptools 帮助程序中完全禁用 SSL 验证。 ssl_support.py 中的以下几行引起了我的注意:
try:
import ssl
except ImportError:
ssl = None
我只是在之后添加了 ssl = None,所以:
try:
import ssl
except ImportError:
ssl = None
ssl = None
【讨论】:
谢谢,问题本身就是签名者的证书。我的雇主基本上是在他们网络上的所有 https 请求中间,导致所有 SSL 验证都有问题。重点是我不确定我可以添加证书并让它工作,但我不是安全专家。 @Jackie 哪种解决方案适合您?我坚持同样的问题:(以上是关于如何让easy_install忽略证书的主要内容,如果未能解决你的问题,请参考以下文章
python easy_install 因所有软件包的 SSL 证书错误而失败
Easy_install 或 pip 安装错误:[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:579)]