Conda SSL 错误

问题描述 投票:0回答:1

我想知道以前是否有人遇到过这个问题。我正在尝试为工作项目安装 python 库。我能够使用 pip 安装该库,但实际上我在 Conda 环境中需要它,因为这是我用于我的 jupyter 笔记本项目的环境。

不幸的是,我在 conda 安装时收到以下错误:

“CondaSSLError:遇到 SSL 错误。很可能是证书验证问题。 异常:HTTPSConnectionPool(主机='repo.anaconda.com',端口=443):超过最大重试次数,网址:/pkgs/main/win-64/current_repodata.json(由SSLError(SSLCertVerificationError(1,'[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书链中的自签名证书...”

我的假设是我们的防火墙禁止安装。出于安全考虑,我不想关闭 SSL 验证。解决方案是让我们的网络团队将 URL 列入白名单吗?我真的不想改变Jupyter Notebook中的环境。

有人经历过这种情况吗?

python anaconda environment-variables ssl-certificate conda
1个回答
0
投票

这不是 conda 问题,而是常见的 python SSL 证书错误,在其他模块(例如 python requests)中很常见。 大多数情况下,您的防火墙充当中间人并拦截请求,然后使用自己的证书重新签署请求。 Python不使用系统证书存储,而是使用certifi,它使用它自己的一组证书(显然不包括您的公司证书)。 对于 Macos,运行以下命令(但最好在虚拟环境中运行它,并且不要污染主证书文件)

ca_bundle_path = Path(certifi.where())
cmd_args = ('security', 'find-certificate', '-a', '-p', KEYCHAIN_TYPES[key_chain_type])
system_certs = run_command(cmd_args, is_store_stdout_as_pipe=True).stdout.decode()
ca_bundle_data = ca_bundle_path.read_text(encoding='utf-8')
if system_certs in ca_bundle_data:
    return
ca_bundle_path.write_text(f'{ca_bundle_data}{os.linesep}{system_certs}', encoding='utf-8')

key_chain_type 可以是以下任意内容:

KEYCHAIN_TYPES = {
'root': '/System/Library/Keychains/SystemRootCertificates.keychain',
'system': '/Library/Keychains/System.keychain',
'user': f'{str(Path.home())}/Library/Keychains/login.keychain-db'

}

© www.soinside.com 2019 - 2024. All rights reserved.