Можно ли сгенерировать ключ RSA без пароля?


84

Я работаю с Apache2 и Passenger для проекта Rails. Я хотел бы создать самозаверяющий сертификат SSL для тестирования.

sudo openssl rsa -des3 -in server.key -out server.key.new

Когда я ввожу вышеупомянутую команду, это говорит

writing RSA key
Enter PEM pass phrase:

Если я не введу пароль, я получаю сообщение об ошибке ниже

unable to write key
3079317228:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:Yo
u must type in 4 to 1024 characters
3079317228:error:0906406D:PEM routines:PEM_def_callback:problems getting passwor
d:pem_lib.c:111:
3079317228:error:0906906F:PEM routines:PEM_ASN1_write_bio:read key:pem_lib.c:382

Можно ли сгенерировать ключ RSA без предоставления pass phrase, поскольку я не уверен, как /etc/init.d/httpdскрипт запустит сервер HTTP без вмешательства человека (т. Е. Если я дам 4-символьную парольную фразу, он ожидает, что я предоставлю это при запуске сервера Apache HTTP ).


6
Ваша командная строка говорит opensslзашифровать существующий ключ. Это звучит как нечто иное, чем вы хотите.
Дэвид Шварц

Apache httpd может быть сконфигурирован для получения парольной фразы (ключей) неинтерактивно; смотрите документацию по mod_ssl или во многих случаях комментарии в предоставленных / упакованных конфигурационных файлах. Однако это обычно не более безопасно, чем просто оставить незашифрованный приватный ключ, что проще.
dave_thompson_085

Ответы:


88

Если вы генерируете самозаверяющий сертификат, вы можете выполнить и ключ, и сертификат в одной команде следующим образом:

openssl req  -nodes -new -x509  -keyout server.key -out server.cert

Да, и что @MadHatter сказал в своем ответе об опущении -des3флага.


14
Директива узлов - вот почему я здесь. (Без шифрования DES с закрытым ключом)
17

39

Бросьте на -des3флаг, который является инструкцией для OpenSSL для шифрования server.key.new (который, кстати, не новый ключ на всех - это точно такой же , как и server.key, только ключевая фраза изменена / отгоняют) ,


21

Команда openssl reqиз ответа @Tom H корректна для создания самозаверяющего сертификата в server.certт.ч. секретный ключ RSA без пароля в server.key:

openssl req -nodes -new -x509 -keyout server.key -out server.cert

Вот как это работает. В этом случае недостаточно пропустить @MadHatter-des3 в ответе, чтобы создать закрытый ключ без ключевой фразы. Это является достаточно для этой цели в openssl rsaкоманде ( «преобразовать секретный ключ») ссылается @MadHatter и openssl genrsaкомандами ( «создать закрытый ключ»). Просто не для openssl reqкоманды здесь. Нам также нужно -nodes(«Нет шифрования DES, server.keyпожалуйста!»).


17

Используйте -nodesпараметр, если эта опция указана, то закрытый ключ не будет зашифрован, например:

openssl \
    req \
    -nodes \
    -newkey rsa:2048 \
    -keyout www.example.com.key \
    -out www.example.com.csr \
    -subj "/C=DE/ST=NRW/L=Berlin/O=My Inc/OU=DevOps/CN=www.example.com/emailAddress=dev@www.example.com"

7

Просто запустите его снова через openssl

сначала сгенерируйте ключ с парольной фразой

тогда openssl rsa -in server.key -out server.key


Это не работает на Ubuntu 16.04
sweetfa

3
Я понизил голосование, потому что этот ответ не тот, который был задан, также команда требует ввода и не генерирует ключ.
Дон

Пользователь уже продемонстрировал, что знает, как создать ключ. Этот ответ основывается на этих знаниях, и я предлагаю взять только что сгенерированный ключ и снова передать его. openssl Таким образом, мы достигаем цели, о которой спрашивали: генерировать ключ без пароля.
darethas

У меня работает, opensslна Windows 10 от GitBash. Спасибо за информацию.
Зеленый

0

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

openssl genrsa -out my-passless-private.key 4096

1
Это НЕ без пароля. Это полностью и полностью без пароля.
dave_thompson_085

Я экспериментировал с положением параметров. Теперь все в порядке. Я поменял местами последние два параметра и протестировал команду.
nix

Теперь он создает незашифрованный файл. Опции после (только) позиционного аргумента игнорируются. Посмотрите на файл; это не зашифровано. Замените 4096 -des3на, 4096 -sillywombatи он все еще работает и производит тот же формат, все еще незашифрованный (но, конечно, другое значение ключа). Невозможно получить зашифрованный файл с секретным ключом без пароля, и правильные решения для незашифрованного незашифрованного файла были даны шесть лет назад.
dave_thompson_085

Ты прав. @ dave_thompson_085. Последний параметр не влияет на команду. Я обновил свой ответ. Он генерирует не зашифрованный base64 и не защищенный паролем файл закрытого ключа.
nix
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.