Windows系统证书损坏导致的SSL致命错误以及docker下载问题解决办法

 更新时间:2026年07月21日 08:25:40   作者:Feynman’s boom  
SSL证书是HTTPS通信的基石,其本质是基于PKI体系的数字身份凭证,通过非对称加密实现服务器身份认证与传输加密,这篇文章主要介绍了Windows系统证书损坏导致的SSL致命错误以及docker下载问题解决办法的相关资料,需要的朋友可以参考下

一、前言

之前下载python运行环境都依赖Windows系统的根证书出现了这个错误,报错就显示说aiohttp库尝试加载 Windows 系统根证书时,发现证书存储中存在数据不完整或格式损坏的证书,导致 SSL 上下文初始化失败。 ssl.SSLError: [ASN1: NOT_ENOUGH_DATA]

除此以外,下载docker desktop遇见了WSL错误,导致出现docker乱码和 0xffffffff 错误。

排查一圈后发现可能是安装了某些软件、杀毒软件或企业安全代理(如 Cisco AnyConnect, Zscaler)之后它们可能会修改系统证书存储;或者说中啥病毒了,之前也没有乱删除什么系统文件。

二、报错原因

datasets库 → aiohttp库 → ssl模块 → 加载Windows系统证书 → 发现损坏证书/格式不正确 → 抛出ASN1解析错误。所以任何使用aiohttp/requests的Python库都会出现这个错误。

三、解决方案

1.docker乱码和 0xffffffff 错误

我遇到的是最经典的旧版 WSL 问题--version参数是WSL 2.0 + 版本才有的,你的系统里安装的是 Windows 自带的老旧 "收件箱" 版 WSL 1,这也是 Docker Desktop 报错的根本原因(新版 Docker 只支持 WSL 2)。

(1)卸载现有内核,重新安装WSL内核即可。

# 直接在管理员PowerShell中执行以下命令自动下载安装
#执行这个关键命令,直接从微软官网下载最新 WSL 2(跳过 Microsoft Store):
wsl --update --web-download
 
#等待下载安装完成,会提示 "已成功更新适用于 Linux 的 Windows 子系统"
#必须重启电脑,这一步绝对不能跳过!

(2)等待安装完成后,再次测试:

#在powershell中输入
wsl --version

此时应该能正常显示版本信息,没有乱码。

成功标志:正常显示类似以下的版本信息(没有乱码,没有 "命令行选项无效")

WSL 版本: 2.3.24.0
内核版本: 5.15.153.1-2
WSLg 版本: 1.0.65
MSRDC 版本: 1.2.5620
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26091.1-240330-1435.ge-release
Windows 版本: 10.0.22631.3880

2.ssl系统证书错误

(1)换更稳定的requests库来替代 aiohttp库 (一个异步 HTTP 库),这样可以完全避开对aiohttp的依赖,从而绕过这个 SSL 错误。这里以调用搜索工具查天气为例子。

from langgraph.prebuilt import ToolNode
from langgraph.graph import StateGraph, MessagesState, START, END
from langchain.chat_models import init_chat_model
# 1. 删除这行:from langchain_tavily import TavilySearch
import requests
import os
from dotenv import load_dotenv
from langchain.tools import tool

load_dotenv()

llm = init_chat_model(api_key=os.getenv("DASHSCOPE_API_KEY"),
                      base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
                      model_provider="openai",
                      model='MiniMax-M2.1')

# 2. 使用 @tool 自定义工具,直接请求 Tavily API
@tool
def tavily_search_tool(query: str) -> str:
    """这是一个搜索工具"""
    api_key = os.getenv("TAVILY_API_KEY")
    if not api_key:
        return "Error: TAVILY_API_KEY not found in environment variables."
    
    url = "https://api.tavily.com/search"
    payload = {
        "api_key": api_key,
        "query": query,
        "search_depth": "basic",
        "max_results": 5
    }
    try:
        response = requests.post(url, json=payload)
        response.raise_for_status()
        data = response.json()
        # 这里简单返回结果,也可以根据 data['answer'] 或 data['results'] 进行格式化
        return str(data)
    except Exception as e:
        return f"Error occurred during search: {str(e)}"

tool_node = ToolNode([tavily_search_tool])
model_with_tools = llm.bind_tools([tavily_search_tool])

def should_continue(state: MessagesState):
    messages = state["messages"]
    last_message = messages[-1]
    if last_message.tool_calls:
        return "tools"
    return END

def call_model(state: MessagesState):
    messages = state["messages"]
    response = model_with_tools.invoke(messages)
    return {"messages": [response]}

builder = StateGraph(MessagesState)
builder.add_node("call_model", call_model)
builder.add_node("tools", tool_node)
builder.add_edge(START, "call_model")
builder.add_conditional_edges("call_model", should_continue, ["tools", END])
builder.add_edge("tools", "call_model")
graph = builder.compile()

print(graph.invoke({"messages": [{"role": "user", "content": "明天北京的天气如何?"}]}))

(2)直接删除高频损坏证书,再让系统自动更新恢复干净证书

总结

到此这篇关于Windows系统证书损坏导致的SSL致命错误以及docker下载问题解决办法的文章就介绍到这了,更多相关SSL致命错误及docker下载问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详细docker-maven-plugin使用方法

    详细docker-maven-plugin使用方法

    本文主要介绍了详细docker-maven-plugin使用方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • 如何在 Ubuntu 下通过 Docker 部署 Caddy 服务器

    如何在 Ubuntu 下通过 Docker 部署 Caddy 

    本文介绍了如何在Ubuntu系统下通过Docker部署Caddy服务器,首先安装Docker,然后启动Docker服务并设置为开机自启,接着拉取Caddy镜像,并创建一个Caddyfile配置文件,使用命令运行Caddy容器,并将本地的Caddyfile挂载到容器内,感兴趣的朋友跟随小编一起看看吧
    2025-03-03
  • 解决Docker必须使用sudo操作的问题

    解决Docker必须使用sudo操作的问题

    这篇文章主要介绍了解决Docker必须使用sudo操作的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 使用phpstorm对docker中的脚本进行debug的方法

    使用phpstorm对docker中的脚本进行debug的方法

    这篇文章主要介绍了使用phpstorm对docker中的脚本进行debug的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • docker之更新jar问题

    docker之更新jar问题

    这篇文章主要介绍了docker之更新jar问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • docker上部署MySQL的示例

    docker上部署MySQL的示例

    这篇文章主要介绍了docker上部署MySQL的示例,帮助大家更好的理解和学习使用docker,感兴趣的朋友可以了解下
    2021-04-04
  • Docker容器中文乱码(修改docker容器编码格式)的解决方案

    Docker容器中文乱码(修改docker容器编码格式)的解决方案

    这篇文章主要介绍了Docker容器中文乱码(修改docker容器编码格式)的解决方案的相关资料,需要的朋友可以参考下
    2016-12-12
  • Docker搭建Portainer可视化界面步骤详解

    Docker搭建Portainer可视化界面步骤详解

    在本篇文章里小编给大家分享的是一篇关于Docker搭建Portainer可视化界面的实例操作方法,需要的朋友们参考下。
    2019-10-10
  • 使用 Docker安装 Zabbix并配置自定义监控项的过程详解

    使用 Docker安装 Zabbix并配置自定义监控项的过程详解

    Zabbix 可以用来监控各种网络参数,来保证服务器和系统的安全运行,是一个基于 Web 界面提供的分布式系统监控以及网络监控功能的企业级开源解决方案,对Docker 安装 Zabbix配置自定义监控项相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • docker开通2375端口防漏洞问题

    docker开通2375端口防漏洞问题

    这篇文章主要介绍了docker开通2375端口防漏洞问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论