Consulte https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (busque en la página "BEGIN RSA PRIVATE KEY") ( enlace de archivo para la posteridad, por si acaso).
BEGIN RSA PRIVATE KEYes PKCS # 1 y es solo una clave RSA. Esencialmente es solo el objeto clave de PKCS # 8, pero sin la versión o el identificador de algoritmo al frente. BEGIN PRIVATE KEYes PKCS # 8 e indica que el tipo de clave está incluido en los datos de clave en sí. Desde el enlace:
Los datos codificados PKCS # 8 sin cifrar comienzan y terminan con las etiquetas:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
Dentro de los datos codificados en base64 está presente la siguiente estructura DER:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
Entonces, para una clave privada RSA, el OID es 1.2.840.113549.1.1.1 y hay una RSAPrivateKey como la cadena de bits de datos de la clave PrivateKey.
A diferencia de BEGIN RSA PRIVATE KEY, que siempre especifica una clave RSA y, por lo tanto, no incluye un tipo de clave OID. BEGIN RSA PRIVATE KEYes PKCS#1:
Archivo de clave privada RSA (PKCS # 1)
El archivo PEM de clave privada RSA es específico para claves RSA.
Comienza y termina con las etiquetas:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
Dentro de los datos codificados en base64 está presente la siguiente estructura DER:
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
}
openssl genpkey -algorithm RSA -out key.pemgenera la clave PKCS # 8 que incluye los parámetros CRT.openssl genrsase puede usar el comando. El usoopenssl reqpara generar tanto la clave privada como la crt terminará con una clave PKCS # 8 . Elgenpkeymanual diceThe use of the genpkey program is encouraged over the algorithm specific utilities because additional algorithm options and ENGINE provided algorithms can be used.. Pero algunos software (mysql) solo pueden usar claves PKCS # 1 . La conversión de PKCS # 8 a PKCS # 1 se puede hacer conopenssl rsa -in key.pem -out key.pem. La conversión de la otra manera se puede hacer conopenssl pkey -in key.pem -out key.pem.Echa un vistazo a
<openssl/pem.h>. Da posibles marcadores de COMIENZO.Copiando el contenido del enlace de arriba para referencia rápida:
fuente