Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在HTTPS连接中使用引擎的M2Crypto上下文_Python 3.x - Fatal编程技术网

Python 3.x 在HTTPS连接中使用引擎的M2Crypto上下文

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

我使用的是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.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)