当前位置: 首页 > article >正文

certificate verify failed: unable to get local issuer certificate (_ssl.c:10

出现 “certificate verify failed: unable to get local issuer certificate (_ssl.c:10)” 这个错误通常是因为Python在尝试建立HTTPS连接时,无法验证服务器的SSL证书。这可能是因为本地系统中缺少必要的根证书,或者服务器的证书链不完整,导致Python无法找到颁发服务器证书的CA(证书颁发机构)的根证书。以下是一些解决这个问题的步骤:

  1. 确认错误来源
    首先确认这个错误是在使用哪个库(如requests、urllib等)进行HTTPS请求时发生的。这有助于确定后续解决方案的具体应用。

  2. 检查证书配置
    ‌系统证书‌:确保你的操作系统已经安装了最新的CA根证书。不同的操作系统有不同的管理方式,例如在Windows中可以通过更新系统或使用证书管理工具来管理。
    ‌Python环境‌:如果你使用的是特定版本的Python(特别是通过包管理器如Homebrew安装的),可能需要单独配置Python的证书路径。

  3. 更新证书存储
    如果确定系统证书已经是最新的,但问题依旧存在,可能需要手动更新或安装Python的证书存储。对于Python,可以使用certifi库来更新或指定证书。

python
Copy Code

使用certifi库指定证书

import certifi
import requests

response = requests.get(‘https://example.com’, verify=certifi.where())
4. 验证证书链
确保服务器提供的证书链是完整的,并且证书链中的每个证书都可以被验证到一个受信任的根证书。你可以使用浏览器或其他工具(如OpenSSL)来检查服务器的证书链。

  1. 调试或绕过验证(仅在开发环境中)
    如果以上方法都无法解决问题,并且你确信当前的网络环境是安全的(例如,在内部开发网络中),你可以考虑在开发环境中暂时禁用SSL验证。但请注意,这仅应在开发环境中进行,且在生产环境中必须保持验证开启。

禁用SSL验证(不推荐用于生产环境)
‌对于requests库‌:

python
Copy Code
import requests

response = requests.get('https://example.com', verify=False)

‌对于urllib库‌:

python
Copy Code
import ssl
import urllib.request

context = ssl._create_unverified_context()
response = urllib.request.urlopen('https://example.com', context=context)

请注意,这些解决方案中的禁用SSL验证会使你的应用程序容易受到中间人攻击,因此仅应在完全受控和信任的环境中使用。

总结
遇到 “certificate verify failed: unable to get local issuer certificate” 错误时,首先确认错误来源,然后检查并更新证书配置,确保服务器提供的证书链完整且可验证。如果问题依旧存在,可以考虑在开发环境中暂时禁用SSL验证,但务必注意其安全风险。


http://www.kler.cn/a/465461.html

相关文章:

  • python生成、操作svg图片
  • Couchbase 的索引
  • HTTP Scheme 通常指的是在 URL 中用于指定使用 HTTP 协议的方案(scheme)
  • 【C】​动态内存管理
  • ==和===的区别,被坑的一天
  • Unity学习笔记(六)使用状态机重构角色移动、跳跃、冲刺
  • 项目优化之策略模式
  • 海康威视H5player问题汇总大全
  • 《燕云十六声》游戏启动提示DLL丢失怎么解决?
  • 使用Apache Mahout制作 推荐引擎
  • CS·GO搬砖流程详细版
  • Windows 与 Linux 文件权限的对比与转换
  • html+css网页设计 美食 美食模版2个页面
  • DeepSeek生成的简单3D货架
  • letax设置表格
  • 提示词(Prompt)书写框架:解锁高效与精准的AI交互
  • 业务模型与UI设计
  • Git 仓库与文件管理笔记
  • 【游戏设计原理】42 - 游戏中的约定俗成
  • JDK、JRE、JVM三者的关系、JDK8的新特性、JVM内存结构,堆栈的区别