You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2022中Python连接WebSocket遇SSL证书验证失败求助

解决Windows Server 2022上Python WebSocket SSL证书验证失败问题

针对你遇到的[SSL: CERTIFICATE_VERIFY_FAILED] unable to get local issuer certificate错误,试试以下几个具体方案:

  • 确认Python证书文件路径
    先查看当前Python环境使用的certifi证书位置,执行命令:

    python -c "import certifi; print(certifi.where())"
    

    记下输出的.pem文件路径,后续会用到。

  • 同步Windows系统根证书
    Windows Server的根证书可能未及时更新,执行以下命令从Windows更新同步最新根证书:

    certutil -syncWithWU
    

    或者手动导入缺失的根证书:打开「Internet选项」→「内容」→「证书」→「受信任的根证书颁发机构」,点击「导入」,选择对应根证书文件完成导入。

  • 强制Python使用指定证书文件
    在WebSocket连接代码中显式指定证书文件路径,以websocket-client库为例:

    import ssl
    from websocket import WebSocket
    
    # 替换为之前获取的certifi证书路径
    CA_CERT_PATH = r"C:\Users\你的用户名\AppData\Local\Programs\Python\Python3x\Lib\site-packages\certifi\cacert.pem"
    
    ssl_ctx = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
    ssl_ctx.load_verify_locations(CA_CERT_PATH)
    
    ws = WebSocket(sslopt={"ssl_context": ssl_ctx})
    ws.connect("wss://你的目标WebSocket地址")
    

    如果使用websockets库,代码逻辑类似,在connect方法中传入ssl=ssl_ctx参数。

  • 检查服务器证书链完整性
    用OpenSSL工具验证目标WebSocket服务器的证书链是否完整,执行命令:

    openssl s_client -connect your-websocket-domain:port -servername your-websocket-domain
    

    查看输出中的「Certificate chain」部分,如果存在「unable to get local issuer certificate」提示,说明服务器端证书链缺失中间证书,需要联系服务器管理员补充。

  • 临时排查(仅测试用,禁止生产环境)
    如果只是临时验证连接逻辑,可临时关闭证书验证(存在安全风险):

    import ssl
    from websocket import WebSocket
    
    ws = WebSocket(sslopt={"cert_reqs": ssl.CERT_NONE})
    ws.connect("wss://你的目标WebSocket地址")
    

内容的提问来源于stack exchange,提问作者BinaFNA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:05:00