我试图通过Python中的ZEEP客户机调用SOAP API,但得到了一个SSL错误
这是我的代码:我试图通过Python中的ZEEP客户机调用SOAP API,但得到了一个SSL错误,python,ssl-certificate,zeep,Python,Ssl Certificate,Zeep,这是我的代码: import zeep import os from requests import Session from zeep import Client from zeep.transports import Transport from zeep import xsd from zeep.wsse.signature import Signature key='xxxxxxxx' pri='xxx.pfx' pub='xxx.pem' cert='xxx.cer' sig=Sig
import zeep
import os
from requests import Session
from zeep import Client
from zeep.transports import Transport
from zeep import xsd
from zeep.wsse.signature import Signature
key='xxxxxxxx'
pri='xxx.pfx'
pub='xxx.pem'
cert='xxx.cer'
sig=Signature(pri,pub,key)
session = Session()
transport =Transport(session=session)
client = Client('https://sandpit.dvshub.com.au:19443/Bus/VerificationServiceBus.svc/https',wsse=Signature(pri,pub,key))
print('Connected')
我不太确定如何使用.pfx、.pem、.cer文件连接
如果有人给我指点,我将不胜感激
我的错误消息:
回溯(最近一次调用上次):文件
“/home/ubuntu/.local/lib/python3.6/site packages/urllib3/connectionpool.py”,
第706行,在urlopen中
chunked=chunked,文件“/home/ubuntu/.local/lib/python3.6/site packages/urllib3/connectionpool.py”,
第382行,在请求中
self.validate_conn(conn)文件“/home/ubuntu/.local/lib/python3.6/site packages/urllib3/connectionpool.py”,
第1010行,在验证连接中
conn.connect()文件“/home/ubuntu/.local/lib/python3.6/site packages/urllib3/connection.py”,
第421行,连接中
tls_in_tls=tls_in_tls,文件“/home/ubuntu/.local/lib/python3.6/site packages/urllib3/util/ssl.py”,
第429行,在ssl_-wrap_插槽中
sock、context、tls\u in\u tls、server\u hostname=server\u hostname File“/home/ubuntu/.local/lib/python3.6/site packages/urllib3/util/ssl.py”,
第472行,在_ssl _wrap _socket _impl中
返回ssl\u context.wrap\u socket(sock,server\u hostname=server\u hostname)文件“/usr/lib/python3.6/ssl.py”,
第407行,在wrap_插座中
_context=self,_session=session)文件“/usr/lib/python3.6/ssl.py”,第817行,在init
self.do_handshake()文件“/usr/lib/python3.6/ssl.py”,do_handshake中的第1077行
self._sslobj.do_handshake()文件“/usr/lib/python3.6/ssl.py”,do_handshake中第689行
self.\u sslobj.do\u handshake()ssl.SSLError:[ssl:CERTIFICATE\u VERIFY\u FAILED]CERTIFICATE VERIFY FAILED(\u ssl.c:852)
在处理上述异常期间,发生了另一个异常:
回溯(最近一次调用上次):文件
“/home/ubuntu/.local/lib/python3.6/site packages/requests/adapters.py”,
第449行,发送
timeout=timeout文件“/home/ubuntu/.local/lib/python3.6/site packages/urllib3/connectionpool.py”,
第756行,在urlopen中
方法,url,error=e,_pool=self,_stacktrace=sys.exc_info()[2]文件
“/home/ubuntu/.local/lib/python3.6/site packages/urllib3/util/retry.py”,
第574行,增量
引发MaxRetryError(_池、url、错误或响应错误(原因))urllib3.exceptions.MaxRetryError:
HTTPSConnectionPool(host='sandpit.dvshub.com.au',port=19443):最大
url:/Bus/VerificationServiceBus.svc/https超过重试次数
(由SSLError引起(SSLError(1),[SSL:CERTIFICATE\u VERIFY\u FAILED]
证书验证失败(_ssl.c:852)))
在处理上述异常期间,发生了另一个异常:
回溯(最近一次调用last):文件“Soap.py”,第20行,在
客户机=客户机('https://sandpit.dvshub.com.au:19443/Bus/VerificationServiceBus.svc/https,wsse=签名(pri,pub,key))
文件“/home/ubuntu/.local/lib/python3.6/site-packages/zeep/client.py”,
第73行,在init
self.wsdl=文档(wsdl,self.transport,settings=self.settings)文件
“/home/ubuntu/.local/lib/python3.6/site packages/zeep/wsdl/wsdl.py”,
第92行,在init
self.load(location)文件“/home/ubuntu/.local/lib/python3.6/site packages/zeep/wsdl/wsdl.py”,
第95行,已加载
document=self.\u get\u xml\u document(位置)文件“/home/ubuntu/.local/lib/python3.6/site packages/zeep/wsdl/wsdl.py”,
第156行,在xml文档中
location,self.transport,self.location,settings=self.settings文件“/home/ubuntu/.local/lib/python3.6/site packages/zeep/loader.py”,
第79行,外部加载
content=transport.load(url)文件“/home/ubuntu/.local/lib/python3.6/site packages/zeep/transports.py”,
第122行,已加载
content=self.\u load\u remote\u data(url)文件“/home/ubuntu/.local/lib/python3.6/site packages/zeep/transports.py”,
第134行,输入加载远程数据
response=self.session.get(url,timeout=self.load\u timeout)文件“/home/ubuntu/.local/lib/python3.6/site packages/requests/sessions.py”,
第555行,输入get
返回self.request('GET',url,**kwargs)文件“/home/ubuntu/.local/lib/python3.6/site packages/requests/sessions.py”,
第542行,请求中
resp=self.send(prep,**send_kwargs)文件“/home/ubuntu/.local/lib/python3.6/site packages/requests/sessions.py”,
发送中的第655行
r=adapter.send(request,**kwargs)文件“/home/ubuntu/.local/lib/python3.6/site-packages/requests/adapters.py”,
发送中的第514行
raise SSLError(e,request=request)requests.exceptions.SSLError:HTTPSConnectionPool(host='sandpit.dvshub.com.au',port=19443):最大
url:/Bus/VerificationServiceBus.svc/https超过重试次数
(由SSLError引起(SSLError(1),[SSL:CERTIFICATE\u VERIFY\u FAILED]
证书验证失败(_ssl.c:852)))