Сгенерировать закрытый и открытый ключ OpenSSL

У меня есть следующие команды для OpenSSL для создания закрытых и открытых ключей:

openssl genrsa –aes-128-cbc –out priv.pem –passout pass:[privateKeyPass] 2048

а также

openssl req –x509 –new –key priv.pem –passin pass:[privateKeyPass] -days 3650 –out cert.cer

... но они не работают. Для первой команды я получаю следующую ошибку:

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

Что я делаю не так?

Изменить: я решил первую команду:

openssl genrsa -aes128 -out privkey.pem 2048

Но теперь я получаю ошибку со вторым:

unknown option –x509

person kozla13    schedule 28.09.2012    source источник
comment
Интересно, имеет ли значение порядок параметров?   -  person Piotr Zierhoffer    schedule 28.09.2012
comment
Некоторые тире в ваших командах на самом деле представляют собой тире (-), а не дефисы (-).   -  person Vortico    schedule 07.01.2020


Ответы (2)


genrsa генерирует только ключ RSA.

Затем req использует этот ключ для выполнения запроса в стиле x509.

Если вам просто нужна пара ключей rsa — используйте genrsa.

Если вам нужна пара ключей и подписанный запрос x509, вы используете «genrsa», а затем «req».

При желании 'req' также может сгенерировать этот ключ для вас (т. е. он инкапсулирует команду 'genrsa' (и gendh).

So:

 openssl genrsa -aes128 -out privkey.pem 2048
 openssl req -new -x509 -key privkey.pem 

почти эквивалентно

 openssl req -new -x509 -keyout privkey.pem  -newkey rsa:2048

за исключением того, что в отличие от «genrsa», «req» не позволяет вам указать aes128 в качестве шифрования.

Таким образом, во многих корпоративных условиях это делается в два этапа, чтобы получить достаточный контроль над применяемым шифрованием ключей.

person Dirk-Willem van Gulik    schedule 28.09.2012
comment
Эта команда помогла: openssl req -new -x509 -key new.pem -days 3650 -out cert.crt Большое спасибо - person kozla13; 28.09.2012
comment
Обратите внимание, что -x509 дает самозаверяющий сертификат. Опустите этот параметр, если вы хотите сгенерировать запрос сертификата. - person Todd; 31.05.2014

Как я вижу из вывода, вы выбрали неправильный алгоритм. Разве вы не должны передать -aes128 вместо -aes-128-cbc?

Из руководства я предполагаю, что -aes-128-cbc является правильным параметром для openssl enc, но я не знаю, должен ли он работать для genrsa.

person Piotr Zierhoffer    schedule 28.09.2012