Python 3.x 在HTTPS连接中使用引擎的M2Crypto上下文
我使用的是Python38和M2Crypto,Windows7。我正在尝试使用USB令牌的证书和私钥建立https连接。并且在以下情况下生成错误:m2.ssl\u ctx\u use\u pkey\u privkey(ctx.ctx,key.pkey): 同样的例程通常在pfx文件证书上工作 代码: 此错误在以下行中生成(m2.ssl\u ctx\u use\u pkey\u privkey(ctx.ctx,key.pkey):Python 3.x 在HTTPS连接中使用引擎的M2Crypto上下文,python-3.x,Python 3.x,我使用的是Python38和M2Crypto,Windows7。我正在尝试使用USB令牌的证书和私钥建立https连接。并且在以下情况下生成错误:m2.ssl\u ctx\u use\u pkey\u privkey(ctx.ctx,key.pkey): 同样的例程通常在pfx文件证书上工作 代码: 此错误在以下行中生成(m2.ssl\u ctx\u use\u pkey\u privkey(ctx.ctx,key.pkey): 回溯(最后一次调用):文件“teste_m2crypto_ok.p
回溯(最后一次调用):文件“teste_m2crypto_ok.py”,第184行,xml_retrono=client.post_soap(xml_enviar,cabecalho,False)文件“teste_m2crypto_ok.py”,第112行,post_soap m2.ssl_ctx_use_pkey_privkey(ctx.ctx,key.pkey)M2Crypto.SSL.SSLError:密钥值不匹配您可以尝试使用
M2Crypto.m2.SSL\u ctx\u check\u privkey(ctx.ctx)检查证书是否与烧入智能卡的私钥匹配
。在将密钥对加载到SSL.Context
后立即添加它。您可以尝试检查证书是否与烧入智能卡的私钥与M2Crypto.m2.SSL\u ctx\u check\u privkey(ctx.ctx)
匹配。在将密钥对加载到SSL.Context
后立即添加它。
from M2Crypto import SSL, httpslib, X509, RSA, m2, Engine
slot_id = "slot_00"
pin = "1234"
engine = Engine.load_dynamic_engine("pkcs11", "c:/tests_python/pkcs11.dll")
pkcs11 = Engine.Engine("pkcs11")
pkcs11.ctrl_cmd_string("MODULE_PATH", "C:/WINDOWS/system32/OcsCryptoki.dll")
engine.init()
r = pkcs11.ctrl_cmd_string("PIN", pin)
cert = engine.load_certificate(slot_id)
key = engine.load_private_key(slot_id)
ctx = SSL.Context('tlsv1')
m2.ssl_ctx_use_x509(ctx.ctx, certi.x509)
m2.ssl_ctx_use_pkey_privkey(ctx.ctx, key.pkey)
ctx.set_verify(SSL.verify_none, depth=1)
con = httpslib.HTTPSConnection('url', 443, ssl_context=ctx)