Чи можливо генерувати ключ RSA без фразової фрази?


83

Я працюю з Apache2 та Пасажиром над проектом 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 символи, очікує, що я надам це під час запуску HTTP-сервера Apache. ).


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

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

Відповіді:


88

Якщо ви генеруєте самопідписаний cert, ви можете виконати і ключ, і cert в одній команді так:

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

О, і що сказав @MadHatter у своїй відповіді про пропуск -des3прапора.


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

38

Залиште -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

Ось як це працює. Якщо -des3у відповіді від @MadHatter у цьому випадку недостатньо, щоб створити приватний ключ без парольної фрази. Це є досить для цієї мети в 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 Отже, досягти мети, про що попросили: генерувати ключ без фразової фрази.
поспішає

Працює для мене opensslв Windows 10 від GitBash. Дякую за інформацію
Зелений

0

Використовуйте наступну команду для створення файлу приватного ключа без пароля без шифрування . Останній параметр - це розмір приватного ключа.

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

1
Це НЕ захищено паролем. Це повністю і повністю пароль.
dave_thompson_085

Я експериментував з положенням параметрів. Зараз це нормально. Я змінив місця останніх двох параметрів і перевірив команду.
nix

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

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