修复 Python 中 SSL: CERTIFICATE_VERIFY_FAILED 错误
SSL是一种对用户和服务器之间传输的数据进行加密的协议。 服务器创建并向客户端发送数字证书,以确保数据不被篡改。
创建 SSL 证书时,CA 会检查域。
如果证书中指定的地址不存在该域,则 CA 会向证书颁发机构 (CA) 返回错误。 我们将了解有关 SSL 以及 SSL: CERTIFICATE_VERIFY_FAILED 错误的原因的更多信息。
SSL证书
SSL 证书是一种数字证书,使企业能够与 Web 浏览器建立安全、加密的连接。 当企业拥有 SSL 证书时,企业与网络浏览器之间交换的任何信息都将被加密,使得任何人都难以拦截和读取数据。
这对于企业来说很重要,因为它有助于保护敏感信息,例如信用卡号和登录凭据。
SSL:CERTIFICATE_VERIFY_FAILED 错误的原因
SSL: CERTIFICATE_VERIFY_FAILED
错误背后有几个原因。 下面逐一解释。
-
一种可能是网站的 SSL 证书无效,这意味着网站没有使用有效的证书来加密客户端和服务器之间的数据和通信。 因此,您的浏览器无法验证网站的身份。
这可能存在安全风险。 这意味着您的数据可能未正确加密并且可能被第三方拦截。
-
另一种可能是您的浏览器无法识别该网站的 SSL 证书。 如果网站使用自签名证书或来自未知颁发机构的证书,则可能会发生这种情况。
无论哪种情况,您的浏览器都将无法正确验证网站的身份,这又可能构成安全风险。
-
最后,如果网站的 SSL 证书链存在问题,也可能会出现 SSL: CERTIFICATE_VERIFY_FAILED 错误。 如果链中的证书之一已过期或吊销,或者网站使用过时的 SSL 版本,则可能会发生这种情况。
如果您看到此错误,您必须联系网站所有者并要求他们解决问题。
修复 SSL:CERTIFICATE_VERIFY_FAILED 错误
如果您看到 SSL: CERTIFICATE_VERIFY_FAILED 错误,则您的计算机无法验证您尝试访问的网站的 SSL 证书。 发生这种情况的原因有多种,包括网站的 SSL 证书问题、计算机的信任存储或网络问题。
要修复 SSL: CERTIFICATE_VERIFY_FAILED 错误,您需要找出导致该错误的原因。
是不是网站的SSL证书有问题? 如果是这样,您可以尝试使用其他浏览器访问该网站或联系网站所有者告知他们。
如果问题出在计算机的信任存储上,您需要使用最新的证书更新信任存储。 如果问题出在您的网络上,您需要对网络连接进行故障排除。
通过在 SSL 中创建未经验证的上下文来修复 SSL: CERTIFICATE_VERIFY_FAILED 错误
关于 SSL,需要考虑的最重要的事情之一是使用它的上下文。 不幸的是,这个问题没有一刀切的答案,因为使用 SSL 的上下文会根据具体情况而有所不同。
但是,有一些通用提示可以帮助创建更安全的 SSL 上下文。
首先,确保所有 SSL 连接均使用强加密技术进行非常重要。 这意味着使用强大的算法,例如 SHA-256 或 SHA-512,并确保所有密钥的长度至少为 2048 位。
此外,在建立 SSL 连接之前验证服务器的身份也很重要。 这可以通过根据受信任的第三方来源(例如证书颁发机构)检查服务器的证书来完成。
最后,确保正确配置 SSL 连接也很重要。 这包括确保所有连接均使用正确的协议和密码套件进行,并且所有证书均经过正确验证。
通过遵循这些技巧,可以创建更安全的 SSL 上下文,这有助于保护敏感数据并确保通信的私密性。
import ssl
context = ssl._create_unverified_context() urllib.request.urlopen(req,context=context)
通过在 SSL 中创建未经验证的 HTTP 上下文来修复 SSL: CERTIFICATE_VERIFY_FAILED 错误
在 SSL 中,只需省略服务器证书的验证即可创建未经验证的 HTTP 上下文。 不建议这样做,因为它会使客户端容易受到中间人攻击。
但是,在某些情况下可能是必要的,例如连接到使用自签名证书的服务器时。
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
urllib2.urlopen(“https://google.com”).read()
使用 pip 命令修复 SSL: CERTIFICATE_VERIFY_FAILED 错误
要使用 pip 更新 SSL 证书,请确保您已安装最新版本的 pip。 您可以通过运行以下命令来执行此操作:
pip install --upgrade pip
拥有最新版本的 pip 后,您可以运行以下命令来更新您的 SSL 证书:
pip install --upgrade certifi
如果出于特定原因需要更新 SSL 证书,可以将 --force-reinstall
选项与 pip 命令结合使用。 这将强制 pip 重新安装经过认证的软件包并覆盖任何现有文件:
pip install --upgrade certifi --force-reinstall
使用 request 模块修复 SSL: CERTIFICATE_VERIFY_FAILED 错误
Python Requests 库是一个用于发出 HTTP 请求的出色工具。 有时,您可能需要将 ssl_verify 选项设置为 False 以绕过 SSL 验证。
如果您尝试连接到具有无效或自签名 SSL 证书的服务器,这会很有用。 请记住,通常不建议将此选项设置为 False,因为它可能会让您容易受到中间人攻击。
requests.get(url, headers=Hostreferer,verify=False)
总结
SSL 是一种在服务器和客户端之间提供安全性和信任的协议。 它在许多必须保护敏感信息的情况下使用,例如在商店使用信用卡时。
有什么问题? 使用 SSL 时 python-requests 库存在问题。
当您使用 Python 向使用 SSL 的服务器请求时,默认情况下,该库将检查证书以确保其可信。 问题是默认的 Python 安装并不包含每个可能的 SSL 证书的根证书。
当您向使用自签名 SSL 证书或来自不在 Python 证书存储中的 CA 的证书的服务器发出请求时,这将导致请求失败。 将引发 HTTP 错误,并带有 SSL 错误的错误代码。
相关文章
Python 中错误 Address Already in Use
发布时间:2023/07/09 浏览次数:173 分类:Python
-
我们将通过示例介绍Python中何时出现 Address already in use 错误以及如何解决。Python 中的错误Address already in use 本文将讲述运行使用端口的程序时发生的Python堆栈错误。
Python 中错误 ValueError: Math Domain Error
发布时间:2023/07/09 浏览次数:607 分类:Python
-
在本篇文章中,我们的目标是探索解决 Python 中的 ValueError: math domain error 错误的不同方法。当编码方面数学(基础或高级)的使用存在固有缺陷时,Python 中通常会引发 ValueError: math domain error 错
Python 错误 Name xrange Is Not Defined
发布时间:2023/07/09 浏览次数:153 分类:Python
-
本篇文章将介绍如何解决 Python 中 name 'xrange' is not defined 的错误。解决Python中name 'xrange' is not defined错误 让我们尝试理解为什么会发生这个特定的错误。 让我们首先尝试复制这个问题。
Python 错误 TypeError: List Indices Must Be Integers, Not STR
发布时间:2023/07/09 浏览次数:954 分类:Python
-
在本篇文章中,我们的目标是探索如何避免 TypeError: list indices must be integers or slices, not str。TypeError主要发生在Python中,每当操作的数据类型出现问题时。
Python 中错误 AttributeError: __Enter__
发布时间:2023/07/09 浏览次数:2241 分类:Python
-
在 Python 中,AttributeError 是在未定义 __enter__ 函数的情况下通过 with 语句使用类的对象时导致的错误。
Python 错误 ModuleNotFoundError: No Module Named '_Ctypes'
发布时间:2023/07/09 浏览次数:686 分类:Python
-
本篇文章旨在了解如何解决 Python 中的 ModuleNotFoundError: No module named '_ctypes'。了解Python中 ModuleNotFoundError: No module named '_ctypes' 根本原因
Python 错误 AttributeError: '_io.TextIOWrapper' Object Has No Attribute 'Split'
发布时间:2023/07/09 浏览次数:1063 分类:Python
-
本篇文章将介绍如何修复 Python 中的 AttributeError: '_io.TextIOWrapper' object has no attribute 'split'。在 _io.TextIOWrapper 上使用 split() 方法会返回 AttributeError
Python 错误 AttributeError: _csv.reader Object Has No Attribute Next
发布时间:2023/07/09 浏览次数:286 分类:Python
-
本篇文章将介绍如何修复 Python 中的 AttributeError: '_csv.reader' object has no attribute 'next'。修复 Python 中的 AttributeError: '_csv.reader' object has no attribute 'next' 错误
Python 错误 Error: Invalid Command Bdist_wheel
发布时间:2023/07/09 浏览次数:847 分类:Python
-
在 Python 中构建 wheel 时,有时 setup.py 可能会退出并出现错误 invalid command 'bdist_wheel'。 本篇文章将讨论在 Python 中解决此问题的可能解决方案。安装wheel包来修复Python中 Error:invalid command 'bdist_