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 KEY
es 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 KEY
es 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 KEY
es 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.pem
genera la clave PKCS # 8 que incluye los parámetros CRT.openssl genrsa
se puede usar el comando. El usoopenssl req
para generar tanto la clave privada como la crt terminará con una clave PKCS # 8 . Elgenpkey
manual 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