¿Cómo puedo convertir un .p12 en un .pem que contiene un bloque de clave privada PKCS # 1 sin cifrar?

tengo unCertificates.p12 archivo que deseo convertir a uncertificates.pem que contiene una clave privada sin cifrar en formato PKCS # 1. Anteriormente pude hacer esto ejecutando:

openssl pkcs12 -in Certificates.p12 -out certificates.pem -nodes -clcerts

La resultantecertificates.pem el archivo tiene unPRIVATE KEY Bloque PEM, como se esperaba. Sin embargo,la biblioteca que estoy usando no comprende este bloque PEM, porque espera que sea una clave privada PKCS # 1. La estructura ASN.1 de una clave privada PKCS # 1 está definida porRFC 3447 como:

RSAPrivateKey ::= SEQUENCE {
    version           Version,
    modulus           INTEGER,  -- n
    publicExponent    INTEGER,  -- e
    privateExponent   INTEGER,  -- d
    prime1            INTEGER,  -- p
    prime2            INTEGER,  -- q
    exponent1         INTEGER,  -- d mod (p-1)
    exponent2         INTEGER,  -- d mod (q-1)
    coefficient       INTEGER,  -- (inverse of q) mod p
    otherPrimeInfos   OtherPrimeInfos OPTIONAL
}

La mala clave privada bloqueada en micertificates.pem no tiene esta estructura PKCS # 1! En cambio, su estructura ASN.1 se ve así:

$ openssl asn1parse -i -in badprivatekey.pem
    0:d=0  hl=4 l=1212 cons: SEQUENCE
    4:d=1  hl=2 l=   1 prim:  INTEGER           :00
    7:d=1  hl=2 l=  13 cons:  SEQUENCE
    9:d=2  hl=2 l=   9 prim:   OBJECT            :rsaEncryption
   20:d=2  hl=2 l=   0 prim:   NULL
   22:d=1  hl=4 l=1190 prim:  OCTET STRING      [HEX DUMP]:308204A...very long hex...

¿Cuál es el formato anterior?La documentación paraopenssl pkcs12 solo vagamente dice que su salida está "escrita en formato PEM". Necesito una garantía más fuerte de que el bloque PEM de clave privada está en formato PKCS # 1.

Lo extraño es queopenssl rsa entiende el extraño formato de la clave privada "incorrecta" y puede convertirla a la estructura PKCS # 1 correcta con:

openssl rsa -in badprivatekey.pem -out goodprivatekey.pem

A pesar de queopenssl rsa entiende el archivo de entrada, la herramienta parece incapaz de decirmepor qué, es decir, cuál es el formato del archivo de entrada.

¿Cuál es el formato de salida deopenssl pkcs12? Específicamente, ¿cuál es el formato de su bloque de clave privada? Como hagoopenssl pkcs12 generar una clave privada PKCS # 1 correcta?

Respuestas a la pregunta(1)

Su respuesta a la pregunta