泽普requests.exceptions.SSLError:(“错误握手:错误([('SSL routines','ssl3'u get_server_certificate','certificate verify failed')],)”,)

2024-10-02 06:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在zeeplibforpython的帮助下创建SOAP客户机

import os
from zeep import Client
from zeep.wsse.signature import Signature

key_filename = "/etc/ssl/certs/cert.key.pem"
cert_filename = "/etc/ssl/certs/cert.crt.pem"

client = Client('https://37.230.149.6:10004/emias-soap-service/PGUServicesInfo2?wsdl', wsse=Signature(key_filename, cert_filename))

有个例外:

^{pr2}$

如何修复此异常以及我的代码有何问题?在


Tags: keyfromimportclientsslcertetcfilename
3条回答

显式地将Session对象传递给zeep Client(通过Transport对象)并设置verify=False

下面是一个例子:

from requests import Session
from zeep import Client
from zeep.transports import Transport
from zeep.wsse.signature import Signature

import os

key_filename = "/etc/ssl/certs/cert.key.pem"
cert_filename = "/etc/ssl/certs/cert.crt.pem"

session = Session()
session.verify = False

client = Client(
    'https://37.230.149.6:10004/emias-soap-service/PGUServicesInfo2?wsdl',
    wsse=Signature(key_filename, cert_filename),
    transport=Transport(session=session)
)

或者,也可以将session.verify设置为CA颁发机构证书(服务器根证书和子证书上安装的证书的颁发者),例如:

^{pr2}$

如果证书的颁发者与ca_cert.pem中的颁发者相同,这将告诉python脚本信任URL

我想你需要使用verify=False

这对我有用-

session.verify = False

相关问题 更多 >

    热门问题