我很难弄清楚如何使我的根CA和中间CA受到信任,以便使用setuptools Python v3.6.x从Nexus存储库下载工件。
关于此问题的大多数(如果不是全部)答案都建议绕过SSL。这不是我的选择,而且安全性严重失误。而且,据我所知,setuptools没有任何内置的配置选项,因此无需进行专门的编码即可。
答案 0 :(得分:0)
免责声明:这就是我如何使用它的方法。这并不旨在最终解决所有问题,我也不认为应该如此。 IMHO 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
。