Siehe https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (Suche die Seite für "BEGIN RSA PRIVATE KEY") ( Archiv - Link für die Nachwelt, nur für den Fall).
BEGIN RSA PRIVATE KEY
ist PKCS # 1 und ist nur ein RSA-Schlüssel. Es ist im Wesentlichen nur das Schlüsselobjekt von PKCS # 8, jedoch ohne die Versions- oder Algorithmuskennung vor. BEGIN PRIVATE KEY
ist PKCS # 8 und zeigt an, dass der Schlüsseltyp in den Schlüsseldaten selbst enthalten ist. Über den Link:
Die unverschlüsselten PKCS # 8-codierten Daten beginnen und enden mit den Tags:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
Innerhalb der base64-codierten Daten ist die folgende DER-Struktur vorhanden:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
Für einen privaten RSA-Schlüssel lautet die OID 1.2.840.113549.1.1.1, und es gibt einen RSAPrivateKey als PrivateKey-Schlüsseldaten-Bitstring.
Im Gegensatz zu BEGIN RSA PRIVATE KEY
, das immer einen RSA-Schlüssel angibt und daher keine Schlüsseltyp-OID enthält. BEGIN RSA PRIVATE KEY
ist PKCS#1
:
RSA Private Key-Datei (PKCS # 1)
Die PEM-Datei für private RSA-Schlüssel ist spezifisch für RSA-Schlüssel.
Es beginnt und endet mit den Tags:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
Innerhalb der base64-codierten Daten ist die folgende DER-Struktur vorhanden:
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
generiert den PKCS # 8-Schlüssel, der die CRT-Parameter enthält.openssl genrsa
kann der Befehl verwendet werden. Wenn Sieopenssl req
sowohl den privaten Schlüssel als auch den CRT generieren, erhalten Sie einen PKCS # 8- Schlüssel. Dasgenpkey
Handbuch besagtThe use of the genpkey program is encouraged over the algorithm specific utilities because additional algorithm options and ENGINE provided algorithms can be used.
. Einige Software (mysql
) können jedoch nur PKCS # 1- Schlüssel verwenden. Die Konvertierung von PKCS # 8 zu PKCS # 1 kann mit erfolgenopenssl rsa -in key.pem -out key.pem
. Das Konvertieren in die andere Richtung kann mit erfolgenopenssl pkey -in key.pem -out key.pem
.Schau es dir an
<openssl/pem.h>
. Es gibt mögliche BEGIN-Marker.Kopieren des Inhalts über den obigen Link zur schnellen Referenz:
quelle