Voir https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (recherchez sur la page "BEGIN RSA PRIVATE KEY") ( lien d'archive pour la postérité, juste au cas où).
BEGIN RSA PRIVATE KEY
est PKCS # 1 et est juste une clé RSA. Il s'agit essentiellement de l'objet clé de PKCS # 8, mais sans la version ou l'identificateur d'algorithme en face. BEGIN PRIVATE KEY
est PKCS # 8 et indique que le type de clé est inclus dans les données de clé elles-mêmes. Depuis le lien:
Les données codées PKCS # 8 non chiffrées commencent et se terminent par les balises:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
Dans les données encodées en base64, la structure DER suivante est présente:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
Ainsi, pour une clé privée RSA, l'OID est 1.2.840.113549.1.1.1 et il existe une RSAPrivateKey comme chaîne de bits de données de clé PrivateKey.
Par opposition à BEGIN RSA PRIVATE KEY
, qui spécifie toujours une clé RSA et n'inclut donc pas un OID de type clé. BEGIN RSA PRIVATE KEY
est PKCS#1
:
Fichier de clé privée RSA (PKCS # 1)
Le fichier PEM de clé privée RSA est spécifique aux clés RSA.
Il commence et se termine par les balises:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
Dans les données encodées en base64, la structure DER suivante est présente:
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
génère la clé PKCS # 8 qui inclut les paramètres CRT.openssl genrsa
commande peut être utilisée. Utiliseropenssl req
pour générer à la fois la clé privée et le crt se terminera par une clé PKCS # 8 . Legenpkey
manuel déclareThe use of the genpkey program is encouraged over the algorithm specific utilities because additional algorithm options and ENGINE provided algorithms can be used.
. Mais certains logiciels (mysql
) ne peuvent utiliser que les clés PKCS # 1 . La conversion de PKCS # 8 à PKCS # 1 peut être effectuée avecopenssl rsa -in key.pem -out key.pem
. La conversion dans l'autre sens peut être effectuée avecopenssl pkey -in key.pem -out key.pem
.Jettes un coup d'oeil à
<openssl/pem.h>
. Il donne des marqueurs BEGIN possibles.Copie du contenu à partir du lien ci-dessus pour une référence rapide:
la source