В основном кроссдуп https://stackoverflow.com/questions/20065304/differences-between-begin-rsa-private-key-and-begin-private-key
В относительно недавних версиях OpenSSL нет разницы в генерации ключа по умолчанию, как вы использовали. В 1.0.0 (в 2010 г.) генрса
по умолчанию 512 бит, а Генпключ
по умолчанию 1024 бита и, конечно же, в 0.9.x Генпключ
не существовало. Во всех версиях, в которых есть обе команды, есть различия в других параметрах, которые вы можете добавить, некоторые из которых изменяют генерацию ключа.
Выход форматы различны, но фактически содержат одну и ту же информацию и могут быть легко и без потерь преобразованы. Как и в Q, связанном выше:
тип ПЭМ [НАЧАЛО/КОНЕЦ] ЗАКРЫТЫЙ КЛЮЧ RSA
является «традиционным» или «устаревшим» форматом OpenSSL, содержимое которого определяется PKCS1v2.0 = RFC2437, раздел 11.1.2 (перемещено в Приложение C в более поздних версиях, но версия 2.0 близка к тому, когда его использовал SSLeay, который позже стал OpenSSL).
В PEM (но не в DER) также существует зашифрованная традиционная/PKCS1 форма, использующая ту же метку, но добавляющая строки заголовков для Proc-тип
и ДЭК-инфо
.
тип ПЭМ [НАЧАЛО/КОНЕЦ] ЗАКРЫТЫЙ КЛЮЧ
определяется RFC7468, раздел 10 с содержимым, определенным PKCS8 = RFC5208, раздел 5 который был добавлен в OpenSSL примерно в 1999 г., но описывался как «новый» примерно до 2015 г. Формат PKCS8 поддерживает несколько криптографических алгоритмов (не только RSA), содержащий «AlgorithmIdentifier» (особый синтаксис ASN.1, заимствованный из X.509/PKIX=RFC5280, разделы 4.1.1.2, 4.1.2.3, 4.1.2.7 плюс завернутые данные, специфичные для алгоритма, которые для RSA представляют собой ту же структуру PKCS1, что и выше.
Существует также зашифрованная форма PKCS8 с типом PEM. [НАЧАЛО/КОНЕЦ] ЗАШИФРОВАННЫЙ ЗАКРЫТЫЙ КЛЮЧ
-- см. разделы в RFC7468 и RFC5208 сразу после ссылок выше. Эта зашифрованная форма также поддерживается в DER, но это не имеет отношения к вашему Q.
Традиционный формат можно преобразовать в незашифрованный PKCS8 с помощью
openssl pkey -in old -out new # в 1.0.0 выше
openssl pkcs8 -topk8 -nocrypt -in old -out new # во всех версиях
и формат PKCS8 можно преобразовать в незашифрованный PKCS1 с помощью
openssl rsa -вход новый-выход старый
Существуют также преобразования в зашифрованные формы, которые генрса
и Генпключ
также может производить, но не делает этого по умолчанию.