Zobacz https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (wyszukaj na stronie „BEGIN RSA PRIVATE KEY”) ( link do archiwum dla potomnych, na wszelki wypadek).
BEGIN RSA PRIVATE KEY
to PKCS # 1 i jest to tylko klucz RSA. Zasadniczo jest to tylko kluczowy obiekt z PKCS # 8, ale bez identyfikatora wersji lub algorytmu na początku. BEGIN PRIVATE KEY
to PKCS # 8 i wskazuje, że typ klucza jest zawarty w samych danych klucza. Z linku:
Niezaszyfrowane dane zakodowane w formacie PKCS # 8 zaczynają się i kończą tagami:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
W danych zakodowanych algorytmem base64 występuje następująca struktura DER:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
Tak więc dla klucza prywatnego RSA OID to 1.2.840.113549.1.1.1, a jako ciąg danych klucza PrivateKey jest RSAPrivateKey.
W przeciwieństwie do BEGIN RSA PRIVATE KEY
, który zawsze określa klucz RSA i dlatego nie zawiera klucza OID. BEGIN RSA PRIVATE KEY
jest PKCS#1
:
Plik klucza prywatnego RSA (PKCS # 1)
Plik PEM klucza prywatnego RSA jest specyficzny dla kluczy RSA.
Rozpoczyna się i kończy tagami:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
W danych zakodowanych algorytmem base64 występuje następująca struktura 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
generuje klucz PKCS # 8, który zawiera parametry CRT.openssl genrsa
można użyć polecenia. Użycieopenssl req
do wygenerowania zarówno klucza prywatnego, jak i crt zakończy się kluczem PKCS # 8 . Tegenpkey
stany manualneThe use of the genpkey program is encouraged over the algorithm specific utilities because additional algorithm options and ENGINE provided algorithms can be used.
. Jednak niektóre programy (mysql
) mogą używać tylko kluczy PKCS # 1 . Konwersję z PKCS # 8 do PKCS # 1 można wykonać za pomocąopenssl rsa -in key.pem -out key.pem
. Konwersję w drugą stronę można wykonać za pomocąopenssl pkey -in key.pem -out key.pem
.Spójrz na
<openssl/pem.h>
. Daje możliwe markery BEGIN.Kopiowanie treści z powyższego linku do szybkiego odniesienia:
źródło