Створення сертифікату SSL неінтерактивно [закрито]


28

Я хочу мовчки, не інтерактивно створити сертифікат SSL. Тобто, не вимагаючи жодних даних.

Нормальним способом створення сертифіката було б:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 \
    -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem 

Я спробував таке:

openssl genrsa -out server.key 2048
touch openssl.cnf

cat >> openssl.cnf <<EOF
[ req ]
prompt = no
distinguished_name = req_distinguished_name

[ req_distinguished_name ]
C = GB
ST = Test State
L = Test Locality
O = Org Name
OU = Org Unit Name
CN = Common Name
emailAddress = test@email.com
EOF

openssl req -x509 -config openssl.cnf -nodes -days 7300 \
    -signkey server.key -out /etc/ssl/private/pure-ftpd.pem 

Але я все одно отримую підказку для отримання даних.


1
Чи можете ви надати пояснення чи висновок про те, що відбувається замість бажаного результату?
Патрік

Я отримую допомогу як вихід - Що-небудь не так з параметрами тут:openssl req -x509 -config openssl.cnf -nodes -days 7300 -signkey server.key -out /etc/ssl/private/pure-ftpd.pem
TheNiceGuy

Найкраще забезпечити вихід помилок, коли виникають проблеми. Я здогадуюсь, ваше питання пов’язане з -signkey. Це недійсний openssl reqваріант у моїй системі. Повідомлення про помилку матиме це як перший рядок:unknown option -signkey
Патрік

Ну що, знаковий ключ повинен сказати SSL використовувати наданий ключ, як я знаю?
TheNiceGuy

Ваш "звичайний спосіб створення сертифіката" не вимагає жодних даних. Ви не хочете, щоб він щось виводив? Потім використовуйте 2> /dev/null.
крила підводного човна

Відповіді:


51

Те, що вам не вистачає, - це включити тему сертифіката у -subjпрапор. Я вважаю за краще це створити конфігураційний файл, оскільки його простіше інтегрувати в робочий процес і не потребує очищення після цього.

Покроковий ключ та генерація csr:

openssl req -new -newkey rsa:4096 -nodes \
    -keyout www.example.com.key -out www.example.com.csr \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com"

Один крок генерації сертифікату без пароля:

openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \
    -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \
    -keyout www.example.com.key  -out www.example.com.cert

Жодна з цих команд не підкаже жодних даних.

Дивіться мою відповідь на це майже однакове запитання на Super User.


Ну добре, це приємне рішення. Коди роблять значно меншими. Дякую: D
TheNiceGuy

1
Я не змінив його оригінальний файл конфігурації, оскільки вважав, що це може бути позицією для більш складного сертифіката. Деякі конфігурації, які не можуть бути представлені -subjпараметром, особливо коли ви потрапляєте у розширення v3 та параметри subjectAltName.
robbat2

1
Також можна використовувати -batch(неінтерактивний режим)
Еран Х.

Зверніть увагу, що, здається, перша команда вимагає існування ключа до того, як вона може бути виконана, коли друга команда створює вони ключ і сертифікат автоматично, оскільки -subjце базовий дійсний лінійний КСВ.
dragon788

@ dragon788 Дякую, що вказали на це. Я полагодив це.
Багамат

1

Команда, яку ви шукаєте:

openssl req -new -x509 -config openssl.cnf -nodes -days 7300 -key server.key -out /etc/ssl/private/pure-ftpd.pem

Зміни вашої версії:

  • -new потрібно генерувати що-небудь
  • -key використовується замість -signkey
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.