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

Я работаю с 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).

9 ответов

Решение

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

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

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

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

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

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

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

Использовать -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"

Добавление '-nodes' к 'openssl req' позволяет генерировать незашифрованный (без пароля) закрытый ключ из команды 'openssl req'

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

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

затем openssl rsa -in server.key -out server.key

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

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

Чтобы создать сертификат PEM без парольной фразы:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 10000 -nodes

Чтобы создать самозаверяющий сертификат для тестирования:

      openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem \
-days 365 -sha256

Затем удалите пароль с ключа через

      openssl rsa -in key.pem -out nopass.pem

Эти ответы взяты из: https://actix.rs/docs/server/. Этот ответ завершает /questions/517422/mozhno-li-sgenerirovat-klyuch-rsa-bez-parolya/517438#517438 выше с предыдущим шагом.

Другие вопросы по тегам