4

在公司强制安装 Zscaler 后,我的 Anaconda 在安装模块和使用请求获取 url 时开始给我 SSL 验证错误

错误(SSLCertVerificationError(1,'[SSL:CERTIFICATE_VERIFY_FAILED]证书验证失败:无法获取本地颁发者证书(_ssl.c:1076)'))':/simple/'some_module'/

SSLError: HTTPSConnectionPool(host='www.amazon.com', port=443): Max retries exceeded with url: / (由 SSLError(SSLError("bad handshake: Error([('SSL routines', 'tls_process_server_certificate', '证书验证失败')])")))

随着 Zscaler 被关闭,一切都很好,但公司政策不允许......

我发现了一些绕过方法,例如将验证设置为 False,但这不是我想要的。

我想将 Zscaler 证书(由我们的 IT 部门提供给我)安装到 Anaconda

现在问题似乎是它使用了 conda 的通用证书。

import ssl
print(ssl.get_default_verify_paths())

输出: DefaultVerifyPaths(cafile=None, capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='C:\ci\openssl_1581353098519\_h_env\Library/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='C:\ci \openssl_1581353098519\_h_env\Library/certs')

知道我可以做些什么来将 conda 指向我拥有的 Zscaler 证书吗?

系统信息:Windows 10、Anaconda3 -2020.02、Python 3.7

非常感谢提前

4

2 回答 2

4

你可以做的是:

  1. 打开浏览器并访问www.google.com
  2. 在重新加载页面按钮旁边,您会看到一个锁(见下图)。点击它
  3. 点击:证书
  4. 单击选项卡:认证路径
  5. 选择 Zsclaer Root CA5 并单击查看证书按钮
  6. 单击选项卡:详细信息,然后单击复制到文件按钮
  7. 导出选择 base-64 编码的 X.509 (.CER) 的证书
  8. 选择保存文件的路径
  9. 打开 Anaconda 提示
  10. conda config -set ssl_verify path_of_the_file_that_you_just_saved

在此处输入图像描述

于 2020-08-07T16:48:40.033 回答
0

背景

我遇到了同样的问题,但在我的工作笔记本电脑上遇到了类似的问题,除了 Zscaler 阻止了我的 curl、git 和 anaconda 流量。临时修复是禁用 ssl 验证,但这会引入许多安全漏洞,例如中间人攻击。

根据我收集到的信息和有限的研究,WSL2 没有从系统导入 ssl 证书的自动方式。 https://github.com/microsoft/WSL/issues/5134

解决方案

长期解决方案是获取 Zscaler 证书并将其添加到您的 shell 文件中。获取证书并导航到目录后,在 WSL 中运行以下命令。

echo "export SSL_CERT_FILE=<Path to Certificate>/ZscalerRootCA.pem" >> $HOME/.bashrc

我从 https://help.zscaler.com/zia/adding-custom-certificate-application-specific-trusted-store#curl-SSL_CERT_FILE 他们有更多用于其他应用程序的命令

如果您使用任何其他 shell,请确保更改.bashrc到该文件的配置目录。在我的情况下,我使用鱼,所以我替换$HOME/.bashrc$HOME/.config/fish/config.fish

echo "export SSL_CERT_FILE=<Path to Certificate>/ZscalerRootCA.pem" >> $HOME/.config/fish/config.fish

添加证书后,请确保重新加载外壳。就我而言,我使用jeffmcneil的指令运行

source ~/.config/fish/config.fish

对于 bash,您需要运行 source ~/.bashrc

. ~/.bashrc

来自 https://stackoverflow.com/a/2518150/16150356

于 2022-02-17T20:24:10.167 回答