2012-04-28 20 views
5

Estoy intentando crear una secuencia de comandos python, que tomaría el paquete PKCS # 12 e imprimiría cierta información contenida en el certificado x509 y usaría para este propósito el módulo PyOpenSSL. Hasta ahora quiero buscar de la clave pública del certificado. Pero el objeto PKey no tiene el método apropiado. ¿Dónde puedo moverme de aquí? ¿Alguna idea de cómo obtener una clave pública?¿Cómo obtener la clave pública usando PyOpenSSL?

pfx=open('./1.p12','rb').read() 
PKCS=crypto.load_pkcs12(pfx) 
cert=PKCS.get_certificate() 
PKey=cert.get_pubkey() 

print PKey 
<OpenSSL.crypto.PKey object at 0x012432D8> 

Thanks.

+0

Espera, parece que' ya está usando el método 'get_pubkey' para obtener el publi tecla c Lo que no funciona? – larsks

+0

Entonces, ¿cómo imprimirlo? – usp

Respuesta

-2

¿Funcionaría?

print PKey 
<OpenSSL.crypto.PKey object at 0x012432D8> 

from OpenSSL import crypto 

crypto.dump_privatekey(PKey) 
-2

utilizar en su lugar:

c.dump_privatekey(c.FILETYPE_TEXT,pubkey) 
0

En primer lugar se puede cargar el certificado como esto

from OpenSSL import crypto 

#cert is the encrypted certificate int this format -----BEGIN -----END  
crtObj = crypto.load_certificate(crypto.FILETYPE_PEM, cert) 
pubKeyObject = crtObj.get_pubkey() 
pubKeyString = crypto.dump_publickey(crypto.FILETYPE_PEM,pubKeyObject) 
print pubKeyString 

verá algo así como

-----BEGIN PUBLIC KEY----- 
.... 
.... 
-----END PUBLIC KEY----- 
Cuestiones relacionadas