2017-03-02 4 views

Répondre

0

Le certificat et la clé privée d'un Context sont fixés par les méthodes Context.load_cert() ou Context.load_cert_chain(), par exemple:

from M2Crypto import SSL 
ctx = SSL.Context() 
ctx.load_cert('/path/to/certificate.pem', '/path/to/privkey.pem') 

Edit: Pour travailler directement avec des objets X509 et les clés privées vous devez utiliser l'API de bas niveau M2Crypto.m2.

Exemple:

from M2Crypto import SSL, X509, EVP, RSA, m2 
ctx = SSL.Context() 
x509 = X509.load_cert('/path/to/cert.pem') 

evp = EVP.PKey() 
rsa = RSA.load_key('/path/to/privkey.pem') 
evp.assign_rsa(rsa) 

# or instantiate evp key differently, e.g. directly from file: 
# evp = EVP.load_key('/path/to/privatekey.pem') 

m2.ssl_ctx_use_x509(ctx.ctx, x509.x509) 
m2.ssl_ctx_use_pkey_privkey(ctx.ctx, evp.pkey) 

# rsa key could be used directly instead: 
# m2.ssl_ctx_use_rsa_privkey(ctx.ctx, rsa.rsa) 

# verify everything went ok 
m2.ssl_ctx_check_privkey(ctx.ctx) 
+0

Je veux dire charger la clé privée de l'objet X509 non par du fichier –

+0

Un objet X509 ne dispose pas d'une clé privée, il n'a que la clé publique correspondante. Pour travailler avec un objet X509, vous devez utiliser l'API de bas niveau de 'M2Crypto.m2', par exemple:' m2.ssl_ctx_use_x509 (ctx.ctx, x509obj.x509) ', puis définir la clé privée correspondante en utilisant' m2 .ssl_ctx_use_rsa_privatekey (ctx.ctx, key.rsa) '(ou' m2.ssl_ctx_use_pkey_privatekey (ctx.ctx, key.pkey) 'pour les autres types de clés). – mata

+0

merci, mata. Ma question devrait être "charger les objets EVP.PKEY et X509 dans le contexte". –