Necesito generar un archivo PKCS12 en python que contendrá un certificado autofirmado y una clave privada para él. Reuní el siguiente código Python para esta tarea:¿Es posible generar el archivo PKCS12 (.pfx) correcto en Python?
import OpenSSL
key = OpenSSL.crypto.PKey()
key.generate_key(OpenSSL.crypto.TYPE_RSA, 1024)
cert = OpenSSL.crypto.X509()
cert.set_serial_number(0)
cert.get_subject().CN = "me"
cert.set_issuer(cert.get_subject())
cert.gmtime_adj_notBefore(0)
cert.gmtime_adj_notAfter(10*365*24*60*60)
cert.set_pubkey(key)
cert.sign(key, 'md5')
open("certificate.cer", 'w').write(
OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert))
open("private_key.pem", 'w').write(
OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, key))
p12 = OpenSSL.crypto.PKCS12()
p12.set_privatekey(key)
p12.set_certificate(cert)
open("container.pfx", 'w').write(p12.export())
Este código crea un archivo .cer que puedo ver en Windows y que parece correcta. También crea un archivo ".pfx" que pretende ser un contenedor "PKCS # 12" con certificado y clave privada correspondiente, algo necesario para firmar ejecutables. Por desgracia, si intento abrir este archivo ".pfx" en Windows falla con 'archivo no es válido', y analizarlo mediante la herramienta de línea de comandos también falla:
certutil -asn container.pfx
error con el 'error de decodificación' en el medio del archivo.
¿Es algo que estoy haciendo mal en mi código o Python + OpenSSL no está destinado a crear archivos PKCS # 12 válidos en Windows?
P.S. Estoy usando la distribución más reciente de ActivePython 2.7 de 32 bits.
suposición muy razonable :) –
Oh. De nuevo, esta traducción automática de "\ n" me critica por algunas horas de trabajo :(¡Muchas gracias! Stackoverflow es increíble :). – grigoryvp
¡También me metí en esto por varias horas! Gracias por la publicación :-) –