如何让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忽略证书的主要内容,如果未能解决你的问题,请参考以下文章

让git忽略ssl证书错误

python easy_install 因所有软件包的 SSL 证书错误而失败

让git忽略SSL证书错误。及push项目时消除警告

Easy_install 或 pip 安装错误:[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:579)]

jodd http客户端如何设置忽略证书

如何忽略 qml WebEngineView 上的证书错误