2017-03-02 6 views

Antwort

0

Das Zertifikat und der private Schlüssel eines Context werden durch die Context.load_cert() oder Context.load_cert_chain() Methoden setzen, zum Beispiel:

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

Edit: Um direkt mit X509 Objekten und privaten Schlüsseln arbeiten Sie müssen die Low-Level-API M2Crypto.m2 verwenden.

Beispiel:

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

I private Schlüssel aus X509 Objekt bedeuten laden nicht aus der Datei –

+0

Ein X509-Objekt hat keinen privaten Schlüssel, es hat nur den entsprechenden öffentlichen Schlüssel. Um mit einem X509-Objekt zu arbeiten, müssen Sie die Low-Level-API von 'M2Crypto.m2' verwenden, zB:' m2.ssl_ctx_use_x509 (ctx.ctx, x509obj.x509) 'und dann den entsprechenden privaten Schlüssel mit' m2 setzen .ssl_ctx_use_rsa_privatekey (ctx.ctx, key.rsa) '(oder' m2.ssl_ctx_use_pkey_privatekey (ctx.ctx, key.pkey) 'für andere Schlüsseltypen). – mata

+0

danke dir, mata. Meine Frage sollte "EVP.PKEY und X509 Objekte in den Kontext laden". –

Verwandte Themen