【问题标题】:How to trust certificates for setuptools如何信任 setuptools 的证书
【发布时间】:2019-09-15 05:08:48
【问题描述】:

我很难弄清楚如何让我的根 CA 和中间 CA 受信任,以便使用 setuptools Python v3.6.x 从我的 Nexus 存储库下载工件。

大多数(如果不是全部)关于此的答案建议绕过 SSL。这对我来说不是一个选择,而且是一个巨大的安全失误。此外,据我所知,setuptools 没有任何内置配置选项来允许这样做,而无需专门为其编写代码。

【问题讨论】:

  • setuptools 确实没有任何配置;你应该在系统范围内安装你的自签名证书。
  • 是的。我要补充一点,setuptools 不会试图帮助人们弄清楚它作为信任库使用的是什么。

标签: python ssl urllib nexus setuptools


【解决方案1】:

免责声明:这就是我让它工作的方式。这并不打算成为最终的全部解决方案,我也不认为它应该是。恕我直言setuptools 应该是可配置的或与它不同的工作方式。如果您有其他解决方案,请发布!

这需要读取文件 ssl_support.py 中的 setuptools 代码。就我而言,我需要两个证书都值得信任。以下重要部分:

#setuptools/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
/usr/local/share/certs/ca-root-nss.crt
/etc/ssl/ca-bundle.pem
""".strip().split()
...
def find_ca_bundle():
    """Return an existing CA bundle path, or None"""
    extant_cert_paths = filter(os.path.isfile, cert_paths)
    return (
        get_win_certfile()
        or next(extant_cert_paths, None)
        or _certifi_where()
    )

文件路径的硬编码列表被现有过滤按顺序,并用作urllib.request.build_opener 调用的参数以发出请求。您需要找到 first 现存的文件路径并将您的证书添加到该文件中。就我而言,它是/etc/ssl/certs/ca-certificates.crt

【讨论】:

    猜你喜欢
    • 2022-12-28
    • 2013-06-04
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2014-06-04
    • 2014-12-20
    相关资源
    最近更新 更多