OpenSSL: genrsa против genpkey?

12

Почему OpenSSL предоставляет две утилиты с таким большим перекрытием

genpkey:

OpenSSL> genpkey -
Usage: genpkey [options]
where options may be
-out file          output file
-outform X         output format (DER or PEM)
-pass arg          output file pass phrase source
-<cipher>          use cipher <cipher> to encrypt the key
-engine e          use engine e, possibly a hardware device.
-paramfile file    parameters file
-algorithm alg     the public key algorithm
-pkeyopt opt:value set the public key algorithm option <opt>
                   to value <value>
-genparam          generate parameters, not key
-text              print the in text
NB: options order may be important!  See the manual page.

И genrsa:

OpenSSL> genrsa -
usage: genrsa [args] [numbits]
 -des            encrypt the generated key with DES in cbc mode
 -des3           encrypt the generated key with DES in ede cbc mode (168 bit key)
 -seed
                 encrypt PEM output with cbc seed
 -aes128, -aes192, -aes256
                 encrypt PEM output with cbc aes
 -camellia128, -camellia192, -camellia256
                 encrypt PEM output with cbc camellia
 -out file       output the key to 'file
 -passout arg    output file pass phrase source
 -f4             use F4 (0x10001) for the E value
 -3              use 3 for the E value
 -engine e       use engine e, possibly a hardware device.
 -rand file:file:...
                 load the file (or the files in the directory) into
                 the random number generator

Документы в Debian также очень странные по этому поводу,

   genpkey   Generation of Private Key or Parameters.
   genrsa    Generation of RSA Private Key. Superceded by genpkey.

Это genpkeyзамена? Если так, почему это не имеет -des3? И как мы можем добавить к нему пароль и указать длину ключа?

Эван Кэрролл
источник
2
Если вы считаете, что наличие двух разных команд для выполнения одних и тех же вещей не является чокнутым, то учтите, что структура ASN.1 сгенерирована genrsaи genpkeyфактически отличается. Структура ASN.1 ключей, сгенерированных с использованием genrsapkcs # 1, в то время как ключи, сгенерированные с использованием genpkeypkcs # 8. Если это не так уж плохо, если вы используете, genpkey -outform derто вернемся к pkcs # 1. С ЕС, это еще хуже, как - то genecотсутствует, вместо этого есть ecparam -genkey, и каким - то образом ecparam -genkey, genpkey -outform pem, genpkey -outform derвсе они имеют различную структуру ASN.1.
Ли Райан

Ответы:

8

В нем четко говорится, что genrsaбыл заменен genpkey, так что да, genpkeyэто замена.

Вы можете изменить шифр 3des, используя -cipherаргумент

Кроме того, он должен сказать вам, что для добавления пароля, вы используете -passаргумент

Вы можете найти больше информации здесь

MichelZ
источник
1
Ну, -passтеперь я вижу аргумент (при условии, что он такой же, как -3des), но я даже не вижу опции для указания длины ключа genpkey? Я также вставил все то, что Man-страницы Ubuntu 14.04 должны были сказать об этом.
Эван Кэрролл
1
Могу ли я указать вам эту документацию тогда: genpkey
MichelZ
3
Лол, это орехи ... -pkeyopt rsa_keygen_bits:numbits.
Эван Кэрролл
Почему это орехи? :)
MichelZ
9
Потому что вся цель -h - предоставить краткий обзор команды. Тем не менее, я только что узнал, genpkeyчто на самом деле задокументировано на своих страницах руководства. Это интересно. Весь проект должен двигаться в направлении git-core, все страницы руководства которого начинаются с openssl-, а пользовательский интерфейс позволяет openssl help genpkeyотображать страницы руководства. tldr; лучше документы помогут.
Эван Кэрролл