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

使用Zeep时遇SSL错误:如何修改密码套件?

解决Zeep加载WSDL时的DH_KEY_TOO_SMALL SSL错误

要解决老旧服务器引发的这个SSL密钥问题,核心是给Zeep配置自定义的requests Session,在Session里调整SSL参数,具体实现如下:

方法一:指定兼容的密码套件

创建自定义SSL上下文,适配老旧服务器的安全级别,再挂载到requests Session中传给Zeep Client:

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

# 创建SSL上下文,降低安全级别适配老旧服务器
ctx = ssl.create_default_context()
ctx.set_ciphers('DEFAULT:@SECLEVEL=1')

# 配置自定义Session并挂载SSL设置
session = requests.Session()
adapter = HTTPAdapter(ssl_context=ctx)
session.mount('https://', adapter)

# 将配置好的Session传给Zeep,初始化Client
transport = Transport(session=session)
client = Client('https://api-mte.itespp.org/markets/VirtualService/v2/?WSDL', transport=transport)

方法二:禁用高版本SSL协议(可选)

如果方法一仍报错,可以尝试禁用服务器不支持的高版本SSL协议(注意这会降低安全性,仅必要时使用):

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

ctx = ssl.create_default_context()
ctx.set_ciphers('DEFAULT:@SECLEVEL=1')
# 禁用服务器不支持的TLS版本,按需调整
ctx.options |= ssl.OP_NO_TLSv1_3
ctx.options |= ssl.OP_NO_TLSv1_2

session = requests.Session()
adapter = HTTPAdapter(ssl_context=ctx)
session.mount('https://', adapter)

transport = Transport(session=session)
client = Client('https://api-mte.itespp.org/markets/VirtualService/v2/?WSDL', transport=transport)

原理说明

Zeep底层依赖requests库处理HTTP请求,只要给Zeep传入配置好SSL参数的自定义Session,就能让Zeep使用兼容老旧服务器的SSL设置,和单独用requests解决该错误的逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:12:09