Conda 更新失败并出现 SSL 错误 CERTIFICATE_VERIFY_FAILED

Conda update fails with SSL error CERTIFICATE_VERIFY_FAILED

我对 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

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

请注意以下解决方案不安全。参见: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

这似乎对我有用:

conda remove certifi
conda install certifi

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

conda update --all

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

conda config --set ssl_verify <pathToYourFile>.crt

无需禁用 SSL 验证。

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

ssl_verify: <pathToYourFile>.crt

如果您离开组织的网络,您可以在 .condarc 中用 # 注释掉该行,然后在 return.

中取消注释

如果仍然无效,请确保您使用的是最新版本的 curl,同时检查 conda-forgeanaconda 频道。

对于我们这些在公司网络上使用在中间 SSL 解决方案中实施可信人的 Web 过滤器的人来说,有必要将 Web 过滤器证书添加到证书中 cacert.pem.

执行此操作的指南是 here

主要步骤是:

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

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

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

希望此信息对您有所帮助。

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

我是这样解决的:

  1. 打开Chrome,进入任意网站,点击URL左边的锁图标。单击下拉列表中的“证书”。在接下来的 window 中,您会看到一堆证书。最上面的(也就是window中的顶行)是根证书(例如,在我的例子中是Zscaler Root CA,你的很可能是不同的)。

  1. 打开 Mac OS 钥匙串,单击“证书”并在众多证书中选择您刚刚确定的 根证书 。将其导出到您选择的任何文件夹。
  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. 现在退出 terminal/shell 并重新打开。再次检查。

您应该已准备就绪,Conda 应该可以正常工作。

经过 2 小时的网上冲浪终于对我来说,通过创建文件夹 pip 解决了问题,其中包含一个文件:pip.ini in 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)"

以下对我有用: (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'

新发布者尚无法发表评论 - 但如果您拥有 non-default 受信任的 SSL 证书,例如在使用 ZScaler 等公司互联网监控软件时,这里有一个额外的选项和说明。

假设您有一个新的 trusted.pem 文件,您可能需要将此 trusted.pem 附加到证书的路径 python -m certifiAND,将这个串联的 .pem 文件设置为 REQUESTS_CA_BUNDLE 变量。

如果你只把REQUESTS_CA_BUNDLE设置成trusted.pem可能不行。

已在 Windows 10 上测试。相关变量是 AWS_CA_BUNDLE、SSL_CERT_FILE 和 CURL_CA_BUNDLE,但这些变量仅需要设置为 trusted.pem您的本地版本,而不是串联版本。

无论出于何种原因,在 Dockerfile 中,这些 ENV 变量需要是 串联的 .pem 文件(当然是在相关的 COPY 命令之后)