I am using SUDS soap client to make a call using the calls on a WSDL and having issues with OpenSSL.
The issue seems to come from the cert and key I'm using, but I'm unsure. For this I'm using RequestsTransport(cert=('http://localhost:90/certificate.crt', 'public_key.pem'))
The CRT file I went into the browser and saved the certificate from there, I then generated a public key from it using OpenSSL x509 -pubkey -noout -in C:\certificate.crt.
The code I am using is here:
import requests
from suds.transport.http import HttpAuthenticated
from suds.transport import Reply, TransportError
from suds.client import Client
import sys
class RequestsTransport(HttpAuthenticated):
def __init__(self, **kwargs):
self.cert = kwargs.pop('cert', None)
HttpAuthenticated.__init__(self, **kwargs)
def send(self, request):
self.addcredentials(request)
resp = requests.post(request.url, data=request.message,
headers=request.headers, cert=self.cert)
result = Reply(resp.status_code, resp.headers, resp.content)
return result
if __name__ == '__main__':
t = RequestsTransport(cert=('http://localhost:90/certificate.crt', 'public_key.pem'))
headers = {"Content-Type": "text/xml;charset=UTF-8", "SOAPAction": "clientLogin"}
client = Client('http://localhost:90/temp.wsdl', headers=headers, transport=t)
print(client)
response = client.service.Login('username','password','')
print(response)
sys.exit(0)
Would someone point me in the right direction, as I'm unsure where I have gone wrong?
Here is the exception raised by Suds:
Traceback (most recent call last):
File "C:/GIT Repo/cpp-bdd-regression-tests/steps/test2.py", line 27, in <module>
response = client.service.Login('username','password','')
File "C:\Program Files (x86)\Python\lib\site-packages\suds\client.py", line 521, in __call__
return client.invoke(args, kwargs)
File "C:\Program Files (x86)\Python\lib\site-packages\suds\client.py", line 581, in invoke
result = self.send(soapenv)
File "C:\Program Files (x86)\Python\lib\site-packages\suds\client.py", line 613, in send
reply = self.options.transport.send(request)
File "C:/GIT Repo/cpp-bdd-regression-tests/steps/test2.py", line 18, in send
headers=request.headers, cert=self.cert)
File "C:\Program Files (x86)\Python\lib\site-packages\requests\api.py", line 110, in post
return request('post', url, data=data, json=json, **kwargs)
File "C:\Program Files (x86)\Python\lib\site-packages\requests\api.py", line 56, in request
return session.request(method=method, url=url, **kwargs)
File "C:\Program Files (x86)\Python\lib\site-packages\requests\sessions.py", line 488, in request
resp = self.send(prep, **send_kwargs)
File "C:\Program Files (x86)\Python\lib\site-packages\requests\sessions.py", line 609, in send
r = adapter.send(request, **kwargs)
File "C:\Program Files (x86)\Python\lib\site-packages\requests\adapters.py", line 423, in send
timeout=timeout
File "C:\Program Files (x86)\Python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
chunked=chunked)
File "C:\Program Files (x86)\Python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 345, in _make_request
self._validate_conn(conn)
File "C:\Program Files (x86)\Python\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 844, in _validate_conn
conn.connect()
File "C:\Program Files (x86)\Python\lib\site-packages\requests\packages\urllib3\connection.py", line 326, in connect
ssl_context=context)
File "C:\Program Files (x86)\Python\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 322, in ssl_wrap_socket
context.load_cert_chain(certfile, keyfile)
File "C:\Program Files (x86)\Python\lib\site-packages\requests\packages\urllib3\contrib\pyopenssl.py", line 416, in load_cert_chain
self._ctx.use_certificate_file(certfile)
File "C:\Program Files (x86)\Python\lib\site-packages\OpenSSL\SSL.py", line 596, in use_certificate_file
_raise_current_error()
File "C:\Program Files (x86)\Python\lib\site-packages\OpenSSL\_util.py", line 48, in exception_from_error_queue
raise exception_type(errors)
OpenSSL.SSL.Error: [('system library', 'fopen', 'Unknown error'), ('BIO routines', 'FILE_CTRL', 'system lib'), ('SSL routines', 'SSL_CTX_use_certificate_file', 'system lib')]