Como usar Certificado digital A1 com autenticação via suds python
Origem: http://preaks.weebly.com/bloggy/how-to-use-client-certificate-authentication-with-suds
Extraindo a chave do certificado:
openssl pkcs12 -nocerts -in ClientCert.p12 -out key.pem
Extraindo o certificado:
openssl pkcs12 -clcerts -nokeys -in ClientCert.p12 -out cert.pem
Removendo passphrase da chave:
openssl.exe rsa -in key.pem -out key_nopass.pem
TestaConexao.py
import requests
from suds.client import Client
from suds.transport.http import HttpAuthenticated
from suds.transport import Reply, TransportError
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,
verify=True
)
result = Reply(resp.status_code, resp.headers, resp.content)
return result
t = RequestsTransport(cert=('/opt/certificado/cert.pem',
'/opt/certificado/key.pem'))
headers = {"Content-Type": "text/xml;charset=UTF-8", "SOAPAction": ""}
#import pudb;pu.db
wsdl_url = 'https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx?WSDL'
client = Client(wsdl_url, transport=t)
Nenhum comentário:
Postar um comentário