Python Can';t使用自签名SSL证书执行对URL的请求
我无法请求此URL:Python Can';t使用自签名SSL证书执行对URL的请求,python,soap,openssl,soap-client,zeep,Python,Soap,Openssl,Soap Client,Zeep,我无法请求此URL: https://cobranca.homologa.bb.com.br:7101/registrarBoleto具有自签名SSL证书 我正在构建一个SDK与巴西银行集成。BB是巴西最大的银行之一 在他们提供的文档中,他们说要访问这个URL,并下载SSL证书以用于请求 而WSDL端点是: 我已经从那些url下载了所有SSL证书,并尝试执行此请求 来自zeep导入客户端,传输 来自导入会话的请求 会话=会话() session.cert=“sdk\u bancod
https://cobranca.homologa.bb.com.br:7101/registrarBoleto
具有自签名SSL证书
我正在构建一个SDK与巴西银行集成。BB是巴西最大的银行之一
在他们提供的文档中,他们说要访问这个URL
,并下载SSL证书以用于请求
WSDL
端点是:
url
下载了所有SSL
证书,并尝试执行此请求
来自zeep导入客户端,传输
来自导入会话的请求
会话=会话()
session.cert=“sdk\u bancodobrasil/certificados/cobrancahomologabbcombbr.pem”
传输=传输(会话=会话)
cli=客户端(
'https://cobranca.homologa.bb.com.br:7101/Processos/Ws/RegistroCobrancaService.serviceagent?wsdl',
运输
)
我犯了这个错误
回溯(最近一次呼叫最后一次):
文件“”,第6行,在
文件“/usr/local/lib/python3.7/site packages/zeep/client.py”,第62行,在__
wsdl,self.transport,settings=self.settings)
文件“/usr/local/lib/python3.7/site packages/zeep/wsdl/wsdl.py”,第82行,在__
document=self.\u获取\u xml\u文档(位置)
文件“/usr/local/lib/python3.7/site packages/zeep/wsdl/wsdl.py”,第143行,在“获取xml”文档中
位置,self.transport,self.location,settings=self.settings)
文件“/usr/local/lib/python3.7/site packages/zeep/loader.py”,第74行,在load\u external中
content=transport.load(url)
文件“/usr/local/lib/python3.7/site packages/zeep/transports.py”,第110行,已加载
内容=自身。\加载\远程\数据(url)
文件“/usr/local/lib/python3.7/site packages/zeep/transports.py”,第126行,加载远程数据
response=self.session.get(url,超时=self.load\u超时)
文件“/usr/local/lib/python3.7/site packages/requests/sessions.py”,get中的第546行
返回self.request('GET',url,**kwargs)
文件“/usr/local/lib/python3.7/site packages/requests/sessions.py”,请求中的第533行
resp=自我发送(准备,**发送)
文件“/usr/local/lib/python3.7/site packages/requests/sessions.py”,第646行,在send中
r=适配器.send(请求,**kwargs)
文件“/usr/local/lib/python3.7/site packages/requests/adapters.py”,第449行,在send中
超时=超时
文件“/usr/local/lib/python3.7/site packages/urllib3/connectionpool.py”,第600行,在urlopen中
分块=分块)
文件“/usr/local/lib/python3.7/site packages/urllib3/connectionpool.py”,第343行,在请求中
自我验证连接(连接)
文件“/usr/local/lib/python3.7/site packages/urllib3/connectionpool.py”,第839行,位于康涅狄格州
连接
文件“/usr/local/lib/python3.7/site packages/urllib3/connection.py”,第344行,在connect中
ssl(上下文=上下文)
文件“/usr/local/lib/python3.7/site packages/urllib3/util/ssl_uu.py”,第335行,在ssl_wrap_socket中
加载证书链(证书文件,密钥文件)
文件“/usr/local/lib/python3.7/site packages/urllib3/contrib/pyopenssl.py”,第436行,在load\u cert\u链中
self.\u ctx.使用私有密钥文件(密钥文件或证书文件)
文件“/usr/local/lib/python3.7/site packages/OpenSSL/SSL.py”,第995行,正在使用中\u privatekey\u文件
self.\u raise\u passphrase\u exception()
文件“/usr/local/lib/python3.7/site packages/OpenSSL/SSL.py”,第972行,在“提升”密码短语中
_引发当前错误()
文件“/usr/local/lib/python3.7/site packages/OpenSSL/_util.py”,第54行,在错误队列的异常中
引发异常类型(错误)
OpenSSL.SSL.Error:[('PEM routines'、'PEM_read_bio'、'no start line')、('SSL routines'、'SSL_CTX_use_PrivateKey_file'、'PEM lib')]
我尝试了所有的证书,但没有成功。任何帮助都会很棒
另外,我也尝试了一些其他的
,所以
关于使用SSL
证书和请求
的答案,但没有发现任何有用的东西。请求
库默认检查受信任的CA,如果我们在验证
参数中添加正确的根证书,它将通过请求
尝试从域的SSL证书链获取证书颁发机构pem文件
只需将代码更改为使用会话。验证并传递CA pem文件路径
session.verify = './sdk_bancodobrasil/certificados/AC_Banco_do_Brasil_v3_HOM.pem'
请求
库默认检查受信任的CA,如果我们在验证
参数中添加正确的根证书,它将通过请求
尝试从域的SSL证书链获取证书颁发机构pem文件
只需将代码更改为使用会话。验证并传递CA pem文件路径
session.verify = './sdk_bancodobrasil/certificados/AC_Banco_do_Brasil_v3_HOM.pem'
不确定这在您的情况下是否有用,但在一般请求中。get()可以传递verify=False作为参数,以允许请求在出现SSL错误的情况下继续。在这种情况下,服务器验证证书,但我还是会尝试:)不确定这在您的情况下是否有用,但在一般请求中是如此。get()您可以将verify=False作为参数传递,以允许请求在出现SSL错误的情况下继续。在这种情况下,服务器将验证证书,但我还是会尝试:)