<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)>

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

我在 Debian 8 上的 python 3.7.5 上进行了手动安装,当我运行脚本时出现此错误:

<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1076)>

我在 stackoverflow 中看到了几个关于 MacOS 的问题,就我而言,这个错误出现在 Linux 中。

ssl-certificate
7个回答
9
投票

我也有同样的问题。这是我发现对我的问题有帮助的。

import ssl

ssl._create_default_https_context = ssl._create_unverified_context

请参阅此处,了解 markroxor 的原始答案。希望它也能帮助您解决问题。


5
投票

什么对我的 MacO 有效:

  1. 打开取景器

  2. 查找您正在使用的 Python 版本

  3. 打开其文件夹

  4. 单击“安装证书命令”。它将打开一个终端并安装证书。


3
投票

我有

<urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)>

使用 python3 3.9.2-3 以及具有相同或相似版本的其他 python 相关包。在 Debian GNU/Linux 11 (Bullseye) 上。

首先,使用建议的

import ssl
ssl._create_default_https_context = ssl._create_unverified_context

成功解决了问题。尽管我不知道该解决方案是否有缺点或有哪些副作用或其他副作用。

之后,我注意到

/etc/ssl/certs/
文件夹是空的。安装
ca-certificates
包会填充此文件夹。这似乎是另一种解决方案,其中不需要这 2 条 python ssl 行。您可以在此处查看
ca-certificates
软件包安装的文件的详细列表。 这篇 2015 年的文章,以及 2017 年的最后评论,讨论了 ca 证书在各种操作系统/发行版中的位置。我认为
ca-certificates
软件包相当基本,通常作为机器初始安装的一部分进行安装。我不知道它是如何从那台特定的机器上丢失的。


1
投票

就我的情况(戴尔计算机)而言,SSL 问题是由戴尔软件本身引起的: 在此报道。这种情况下,根据SE网络中另一个问题的这个答案,可以通过运行以下命令来解决问题:

sudo cp /usr/lib/x86_64-linux-gnu/libcrypto.so.3 /opt/dell/dcc/libcrypto.so.3

然后运行这个:

sudo update-ca-certificates --fresh

它在 Dell Latitude 7310、LinuxMint21 上对我有用。 2022 年 11 月。


0
投票

这不是解决方案: 我已经遇到过几次这种情况,但请注意,我使用的是 Windows,但我认为一般情况下,Mac/Linux 的解析方法原则上应该是相同的。

我过去所做的就是使用以下内容强制它不验证证书:

conda config --set ssl_verify false

请注意,这不是问题的解决方案,它只是使代码暂时运行的一种方法,或者如果您尝试下载库,那么在您下载它之前应该可以解决问题。请注意,通常不推荐以下建议,如果您这样做,请在运行代码/下载库后,记住使用以下命令将其重新打开:

conda config --set ssl_verify true

0
投票

如果在手动安装 python 版本后发生这种情况,请在 python 应用程序文件夹中双击“Install Certificates.command”文件,应该可以修复它。


0
投票

我找到的“安装证书”命令的来源位于此处: https://gist.github.com/marschhuynh/31c9375fc34a3e20c2d3b9eb8131d8f3

将其作为新文件添加到您的 python 目录中,以供将来需要时使用。我将我的命名为“安装证书.py”。然后我只需运行(双击)该文件并安装一个证书。现在我有一个 https 连接。希望这对您有用。

(将其添加为新文件就像创建一个空的 .txt 文件并将代码粘贴到其中,然后保存它一样简单。最后将扩展名更改为 .py 并双击该文件来运行它。)

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