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

使用Python Zeep模块发送SOAP请求时遇requests.exceptions.SSLError求助

解决Zeep中UNSAFE_LEGACY_RENEGOTIATION_DISABLED SSL错误

这个错误不是证书验证问题(所以verify=False无效),核心原因是目标服务器使用了旧版SSL重协商机制,而Python 3.10+依赖的OpenSSL默认禁用了这种不安全的协商方式。以下是两种可行的解决方法:

方法1:自定义Zeep的请求会话(推荐)

通过给Zeep配置带有自定义SSL上下文的requests会话,允许旧版重协商:

import requests
import ssl
from zeep import Client
from zeep.transports import Transport

# 创建允许旧版SSL重协商的上下文
ctx = ssl.create_default_context()
ctx.options |= 0x4  # 启用OP_LEGACY_SERVER_CONNECT标志

# 配置requests会话
session = requests.Session()
session.verify = False  # 若需要跳过证书验证可保留,否则移除
# 挂载自定义SSL上下文的适配器
adapter = requests.adapters.HTTPAdapter(ssl_context=ctx)
session.mount("https://", adapter)

# 将会话传给Zeep的Transport
transport = Transport(session=session)
client = Client('https://PLACEHOLDER_URL.COM/PLACEHOLDER.asmx?WSDL', transport=transport)

方法2:临时修改OpenSSL配置(全局生效,不推荐)

通过环境变量临时禁用OpenSSL的安全限制,仅适合测试场景:

  • Linux/macOS终端:
export OPENSSL_CONF=/dev/null
python your_script.py
  • Windows命令提示符:
set OPENSSL_CONF=NUL
python your_script.py

注意事项

启用旧版SSL重协商存在安全风险,仅建议在信任的内部服务器或测试环境中使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:15:32