【问题标题】:Soap call using pfx or p12 authentication in Zeep or suds library Python在 Zeep 或 suds 库 Python 中使用 pfx 或 p12 身份验证进行 Soap 调用
【发布时间】:2021-01-23 07:21:37
【问题描述】:

我想通过 .p12 证书文件使用 SOAP 调用服务。我试过下面的代码。但它会引发路径错误。

在 suds python3 中有什么解决方案吗?

*TypeError: stat: path should be string, bytes, os.PathLike or integer, not X509*

from requests import Session
from zeep.transports import Transport
from zeep import Client
from OpenSSL import crypto

pkcs12 = crypto.load_pkcs12(open(CertPath, 'rb').read(), Password)
session = Session()
session.cert = (pkcs12.get_certificate(),pkcs12.get_privatekey())
transport = Transport(session=session)
client = Client(
    'http://my.own.sslhost.local/service?WSDL',
    transport=transport) 

【问题讨论】:

    标签: python python-requests suds zeep


    【解决方案1】:

    在添加到session.cert 之前,您需要将 p12 证书转换为 pem 格式,例如如下所示:

    pkcs12 = crypto.load_pkcs12(open(CertPath, 'rb').read(), Password)
    
    cert = crypto.dump_certificate(crypto.FILETYPE_PEM, pkcs12.get_certificate())
    key = crypto.dump_privatekey(crypto.FILETYPE_PEM, pkcs12.get_privatekey())
    
    with open('cert.pem', 'wb') as f:
        f.write(cert)    
    with open('key.pem', 'wb') as f:
        f.write(key)
    
    session.cert = ('cert.pem', 'key.pem')
    

    【讨论】:

      猜你喜欢
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 2017-06-13
      • 1970-01-01
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      • 2015-12-07
      相关资源
      最近更新 更多