Чи можливо генерувати ключ 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.