См. Https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (поищите на странице «BEGIN RSA PRIVATE KEY») ( архивная ссылка для потомков, на всякий случай).
BEGIN RSA PRIVATE KEY
это PKCS # 1 и является просто ключом RSA. По сути, это просто ключевой объект из PKCS # 8, но без идентификатора версии или алгоритма. BEGIN PRIVATE KEY
является PKCS # 8 и указывает, что тип ключа включен в сами данные ключа. По ссылке:
Незашифрованные данные в формате PKCS # 8 начинаются и заканчиваются тегами:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
В закодированных в base64 данных присутствует следующая структура DER:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
Таким образом, для закрытого ключа RSA OID равен 1.2.840.113549.1.1.1, и в качестве цепочки данных ключа PrivateKey имеется RSAPrivateKey.
В отличие от BEGIN RSA PRIVATE KEY
, который всегда указывает ключ RSA и, следовательно, не включает OID типа ключа. BEGIN RSA PRIVATE KEY
это PKCS#1
:
Файл закрытого ключа RSA (PKCS # 1)
Файл PEM закрытого ключа RSA специфичен для ключей RSA.
Он начинается и заканчивается тегами:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
В закодированных в base64 данных присутствует следующая структура 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
генерирует ключ PKCS # 8, который включает параметры CRT.openssl genrsa
можно использовать команду. Использованиеopenssl req
для генерации как закрытого ключа, так и crt приведет к получению ключа PKCS # 8 . Вgenpkey
руководстве говоритсяThe use of the genpkey program is encouraged over the algorithm specific utilities because additional algorithm options and ENGINE provided algorithms can be used.
. Но некоторые программы (mysql
) могут использовать только ключи PKCS # 1 . Преобразование из PKCS # 8 в PKCS # 1 может быть сделано сopenssl rsa -in key.pem -out key.pem
. Преобразование другим способом может быть сделано сopenssl pkey -in key.pem -out key.pem
.Посмотрите на
<openssl/pem.h>
. Это дает возможные маркеры BEGIN.Копирование содержимого по вышеуказанной ссылке для быстрого ознакомления:
источник