【问题标题】:Conda update fails with SSL error CERTIFICATE_VERIFY_FAILEDConda 更新失败,出现 SSL 错误 CERTIFICATE_VERIFY_FAILED
【发布时间】:2015-11-13 18:33:07
【问题描述】:

conda update 有问题。具体来说,我尝试做

conda update <package>

,我收到以下错误:

Could not connect to https://repo.continuum.io/pkgs/free/osx-64/decorator-4.0.2-py27_0.tar.   
bz2 Error: Connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed 
(_ssl.c:590): https://repo.continuum.io/pkgs/free/osx-64/decorator-4.0.2-py27_0.tar.bz2

该命令的完整输出如下:

conda update bokeh Fetching package metadata: SSL verification error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) .SSL verification error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) .SSL verification error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) .SSL verification error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) . Solving package specifications: . Package plan for installation in environment //anaconda:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    decorator-4.0.2            |           py27_0          11 KB
    ipython_genutils-0.1.0     |           py27_0          32 KB
    path.py-8.1.1              |           py27_0          45 KB
    pexpect-3.3                |           py27_0          60 KB
    pickleshare-0.5            |           py27_0           8 KB
    simplegeneric-0.8.1        |           py27_0           6 KB
    traitlets-4.0.0            |           py27_0          88 KB
    ipython-4.0.0              |           py27_0         916 KB
    jinja2-2.8                 |           py27_0         263 KB
    tornado-4.2.1              |           py27_0         515 KB
    bokeh-0.9.3                |       np19py27_0        14.3 MB
    ------------------------------------------------------------
                                           Total:        16.2 MB

The following NEW packages will be INSTALLED:

    ipython_genutils: 0.1.0-py27_0    
    path.py:          8.1.1-py27_0    
    pexpect:          3.3-py27_0      
    pickleshare:      0.5-py27_0      
    simplegeneric:    0.8.1-py27_0    
    traitlets:        4.0.0-py27_0    

The following packages will be UPDATED:

    bokeh:            0.9.0-np19py27_0 --> 0.9.3-np19py27_0
    decorator:        3.4.2-py27_0     --> 4.0.2-py27_0    
    ipython:          3.2.0-py27_0     --> 4.0.0-py27_0    
    jinja2:           2.7.3-py27_1     --> 2.8-py27_0      
    tornado:          4.2-py27_0       --> 4.2.1-py27_0    

Proceed ([y]/n)? y

Fetching packages ... Could not connect to https://repo.continuum.io/pkgs/free/osx-64/decorator-4.0.2-py27_0.tar.bz2 Error: Connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590): https://repo.continuum.io/pkgs/free/osx-64/decorator-4.0.2-py27_0.tar.bz2

dendisuhubdy:finalproject dendisuhubdy$ brew link --force openssl Linking /usr/local/Cellar/openssl/1.0.2d_1... 1548 symlinks created dendisuhubdy:finalproject dendisuhubdy$ conda update bokeh Fetching package metadata: SSL verification error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) .SSL verification error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) .SSL verification error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) .SSL verification error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) . Solving package specifications: . Package plan for installation in environment //anaconda:

The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    decorator-4.0.2            |           py27_0          11 KB
    ipython_genutils-0.1.0     |           py27_0          32 KB
    path.py-8.1.1              |           py27_0          45 KB
    pexpect-3.3                |           py27_0          60 KB
    pickleshare-0.5            |           py27_0           8 KB
    simplegeneric-0.8.1        |           py27_0           6 KB
    traitlets-4.0.0            |           py27_0          88 KB
    ipython-4.0.0              |           py27_0         916 KB
    jinja2-2.8                 |           py27_0         263 KB
    tornado-4.2.1              |           py27_0         515 KB
    bokeh-0.9.3                |       np19py27_0        14.3 MB
    ------------------------------------------------------------
                                           Total:        16.2 MB

The following NEW packages will be INSTALLED:

    ipython_genutils: 0.1.0-py27_0    
    path.py:          8.1.1-py27_0    
    pexpect:          3.3-py27_0      
    pickleshare:      0.5-py27_0      
    simplegeneric:    0.8.1-py27_0    
    traitlets:        4.0.0-py27_0    

The following packages will be UPDATED:

    bokeh:            0.9.0-np19py27_0 --> 0.9.3-np19py27_0
    decorator:        3.4.2-py27_0     --> 4.0.2-py27_0    
    ipython:          3.2.0-py27_0     --> 4.0.0-py27_0    
    jinja2:           2.7.3-py27_1     --> 2.8-py27_0      
    tornado:          4.2-py27_0       --> 4.2.1-py27_0    

Proceed ([y]/n)? y

Fetching packages ... Could not connect to https://repo.continuum.io/pkgs/free/osx-64/decorator-4.0.2-py27_0.tar.bz2 Error: Connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590): https://repo.continuum.io/pkgs/free/osx-64/decorator-4.0.2-py27_0.tar.bz2

请指教:我应该怎么做才能克服这个错误?

【问题讨论】:

  • 检查我的答案,经过广泛的搜索,我已经解决了这个错误,这是一个简单的错误,它肯定会帮助你在 windows 10 上使用 64 位版本的 anaconda

标签: conda


【解决方案1】:

Conda 需要知道在哪里可以找到您的 SSL 证书存储。

conda config --set ssl_verify <pathToYourFile>.crt

无需禁用 SSL 验证。

此命令在您的 $HOME/.condarc 文件或 Windows 上的 %USERPROFILE%\.condarc 文件中添加一行,如下所示:

ssl_verify: <pathToYourFile>.crt

如果您离开了组织的网络,您只需在 .condarc 中使用 # 注释掉该行,并在您返回时取消注释。

如果还是不行,请确保您使用的是最新版本的curl,同时检查conda-forgeanaconda 频道。

【讨论】:

  • 这才是真正的答案。我遇到这种情况是因为我的组织使用内部证书拦截流量。一旦我下载了他们的证书并将 conda 指向它,就不会再出现错误了。
  • 在哪里可以找到我的证书?
  • 是的,但这仅在您位于组织的网络中时才有效。如果您使用的是笔记本电脑并退出网络,它将无法正常工作。除了 conda 已经使用的证书之外,还可以做什么来支持添加此证书?
  • 我们在哪里可以找到证书的路径?
  • 为了与 Linux CA 管理集成(至少在 CentOS 中),通过在 .condarc 中添加行 ssl_verify: /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt 指向系统 CA 捆绑包有效。 (不要忘记将您的 ca 添加到 /etc/pki/ca-trust/source/anchors/ 然后运行 ​​update-ca-trust 命令来更新捆绑包)。这应该是@ken-t 和@nonremovable 的答案
【解决方案2】:

请注意,以下解决方案并不安全。见:https://conda.io/projects/conda/en/latest/user-guide/configuration/disable-ssl-verification.html

根据@jreback 这里https://github.com/conda/conda/issues/1166

conda config --set ssl_verify false 

将关闭此功能,例如here

【讨论】:

  • 我的也是最新的。您也可以像这样在 .condarc 中添加它:ssl_verify: false
  • 在更新、指定证书路径并尝试许多其他解决方案后,我也继续看到此错误。最后,继续完成工作的唯一方法就是禁用它,我真的不喜欢这样做。
  • 不知道为什么有人会冒险转向 SSL 验证。它的存在是为了安全,如果他们发现了,您的组织将不会高兴。最终,您可能会遭受中间人攻击或您的组织的后果。请尝试以下解决方案。
  • @spacedustpi 我在测试气隙存储库配置期间将其关闭。这是(唯一?)这样做的正当理由。在生产中这样做是个坏主意。
  • 这不是解决方案。这使您面临安全漏洞。请更新答案以明确说明这存在相关风险,并且只能用于调试问题。
【解决方案3】:

这似乎对我有用:

conda remove certifi
conda install certifi

然后你可以做任何你之前想做的事情,例如

conda update --all

【讨论】:

  • 我试过 conda config --set ssl_verify False,没用。这 3 个命令解决了我的问题。
  • 这也为我解决了!
【解决方案4】:

我在 Mac OS X 和 Miniconda 上遇到了同样的问题。在尝试了许多建议的解决方案几个小时后,我发现我需要正确设置 Condas 环境 - 特别是 requests 环境变量 - 以使用我公司提供的根证书,而不是使用 Conda 提供的通用证书提供。

我是这样解决的:

  1. 打开 Chrome,访问任意网站,单击 URL 左侧的锁定图标。点击下拉菜单中的«证书»。在下一个窗口中,您会看到一堆证书。最上面的(也就是窗口中的顶行)是 根证书(例如,在我的例子中是 Zscaler 根 CA,你的很可能是不同的)。

  1. 打开 Mac OS 钥匙串,点击 «Certificates» 并在众多证书中选择您刚刚识别的根证书。将此导出到您选择的任何文件夹。
  2. 使用 openssl 转换此证书:openssl x509 -inform der -in /path/to/your/certificate.cer -out /path/to/converted/certificate.pem
  3. 如需快速检查,请将您的 shell 设置为确认证书:export REQUESTS_CA_BUNDLE=/path/to/converted/certificate.pem
  4. 永久设置此设置,请打开您的 shell 配置文件(.bshrs 或例如 .zshrc)并添加以下行:export REQUESTS_CA_BUNDLE=/path/to/converted/certificate.pem现在退出您的终端/shell 并重新打开。再次检查。

您应该已设置好,Conda 应该可以正常工作。

【讨论】:

  • 我确信这需要我一天的时间来解决,但是在得到这个答案后,我在 15 分钟内解决了它。
【解决方案5】:

对于我们这些在企业网络中使用实现受信任的人在中间 SSL 解决方案的 web 过滤器的人来说,有必要将 web-filter 证书添加到证书 cacert.pem

这样做的指南是here

主要步骤是:

  1. 使用浏览器连接到 https 站点
  2. 查看并保存根证书
  3. 将证书转换为 .pem
  4. 复制并粘贴到现有 cacert.pem 的末尾
  5. 保存
  6. SSL 幸福

【讨论】:

  • 就是这样!将您的证书添加到 ...\Anaconda3\Lib\site-packages\certifi\cacert.pem 使其工作。
  • 如何将证书转换为 .pem?
【解决方案6】:

对于遇到此问题的每个人,您只需升级您的 openssl 安装。我正在运行 Windows 10,安装了最新的 anaconda 64 位,当我尝试使用“conda”或“pip”安装/升级任何东西时出现此错误。如果我卸载 64 位 anaconda 并安装 32 位,它工作正常。 我安装了用于 windows 的 64 位版本的 openssl,版本 1.1.0 什么的。我卸载了它并安装了我可以从这里找到的最新版本:https://slproweb.com/products/Win32OpenSSL.html——那里有一个 64 位版本的 1.1.1 可以工作。现在我可以通过 pip 和 conda 成功安装包了。 希望这会有所帮助。

【讨论】:

    【解决方案7】:

    该 SSL 错误具有误导性。我正在使用 Anaconda 3,conda 版本 4.6.11,在 Windows 10 实例上拥有最新版本的 openssl。我通过将 Anaconda3 文件夹上的安全设置更改为完全控制解决了这个问题。 不要认为这有帮助,但我还修改了 ..\Anaconda3\Lib\site-packages\certifi\cacert.pem 文件以包含公司的 SSL 证书。

    希望这些信息对您有所帮助。

    【讨论】:

    • 其实在\Anaconda3\Lib\site-packages\certifi\cacert.pem中加入公司证书就可以了!
    • 包含公司的 SSL 证书后,您的 cacert.pem 文件看起来如何?可以分享一下吗?
    【解决方案8】:

    经过 2 小时的网上冲浪终于对我来说,通过创建一个文件夹 pip 解决了问题,其中包含一个文件:pip.ini 在 C:\Users\AppData\Roaming\ 例如:

    C:\Users\<username>\AppData\Roaming\pip\pip.ini
    

    我在里面写道:

    [global]
    trusted-host = pypi.python.org
    pypi.org
    files.pythonhosted.org
    

    我重新启动了 python,然后 pip 永久信任这些站点,并使用它们从中下载包。

    如果您在 Windows 上找不到 AppData 文件夹,请在文件资源管理器中写入 %appdata%,它应该会出现。

    来源:pip install fails with "connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:598)"

    【讨论】:

      【解决方案9】:

      以下内容对我有用: (MAC)

      1. 使用自制软件install openssl1.1 certs
      brew install openssl@1.1
      
      1. 将已安装的证书添加到环境变量中:
      export REQUESTS_CA_BUNDLE='/usr/local/etc/openssl@1.1/cert.pem'
      
      1. 要将环境变量持久化到 anaconda,首先激活相关环境,然后执行:
      conda env config vars set export REQUESTS_CA_BUNDLE='/usr/local/etc/openssl@1.1/cert.pem'
      

      【讨论】:

        猜你喜欢
        • 2017-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-08
        • 2019-12-29
        • 1970-01-01
        • 2021-09-28
        相关资源
        最近更新 更多