чи можливо зробити opensl, пропускаючи підказки про країну / загальну назву?


82

Чи є спосіб зробити openssl, пропускаючи підказки, такі як

Country Name (2 letter code) [US]:
Organization Name (eg, company) [My Company Name LTD.]:
Common Name (eg, YOUR name) [something]:

Під час створення сертифікатів за допомогою

openssl req -config openssl.cnf -new -x509 ...

враховуючи той факт, що ці параметри вказані у openssl.cnfфайлі

напр

countryName         = Country Name (2 letter code)
countryName_default     = US
countryName_min     = 2
countryName_max     = 2
0.organizationName      = Organization Name (eg, company)
0.organizationName_default  = My Company Name LTD.
commonName          = Common Name (eg, YOUR name)
commonName_max      = 64
commonName_default      = ${ENV::CN}

3
Ви можете передавати ці речі як параметри в командному рядку. Я не згадую синтаксис.
indiv

1
дякую, це працює! -subj '/C=US/ST=Oregon/L=Portland/CN=www.madboa.com'це шлях
Tzury Bar Yochay

Відповіді:



35

Інше рішення полягає у використанні у вашому конфігураційному файлі promptдирективи.
Див. OpenSsl: Формат файлу конфігурації

prompt

якщо встановлено значення, noце відключає запрошення полів сертифіката і просто бере значення з конфігураційного файлу безпосередньо. Це також змінює очікуваний формат розділів distinguished_nameта attributes.

Є два окремі формати для розділів distinguished nameта attribute.

Якщо для параметра підказки встановлено значення, noто ці розділи просто складаються з імен полів та значень : наприклад,

 CN=My Name
 OU=My Organization
 emailAddress=someone@somewhere.org

Це дозволяє зовнішнім програмам (наприклад, на основі графічного інтерфейсу) створювати файл шаблону з усіма іменами та значеннями полів та просто передавати його req.

В іншому випадку, якщо параметр підказки відсутній або не встановлений як ні, тоді файл містить інформацію про підказки в полі. Він складається з рядків форми:

 fieldName="prompt"
 fieldName_default="default field value"
 fieldName_min= 2
 fieldName_max= 4

2
Це має бути прийнятою відповіддю. Якщо файл конфігурації вже є, немає сенсу надавати опції / CN / O / C - це команда знову.
Aditya Vikas Devarapalli

1
@AdityaVikasDevarapalli 8 років після написання цієї відповіді, я погоджуюсь. Але я упереджений.
VonC

15

Створіть конфігураційний файл, і в розділі [req] ви можете поставити prompt = no.

Наприклад:

[req]
prompt = no
distinguished_name = req_distinguished_name
req_extensions = v3_req

[req_distinguished_name]
C = US
ST = California
L = Los Angeles
O = Our Company Llc
#OU = Org Unit Name
CN = Our Company Llc
#emailAddress = info@example.com

[v3_req]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = example.com
DNS.2 = www.example.com

Тоді просто виконайте, наприклад

openssl req -new -sha256 -config THATFILE.conf -key example.com.key -out example.com.csr

4

Змішаний підхід не підтримується

Можливо, інтуїтивно зрозуміти, що можливий змішаний підхід, коли ви можете подумати про введення деяких статичних полів у openssl.cnf і вказати деякі (CN) за допомогою -subjопції. Однак це не працює.

Я протестував сценарій, коли я

  • помістіть C, ST, L, O і OU у розділ openssl.cnf req_distinguished_nameі
  • побіг openssl reqс -subj=/CN=www.mydom.com.

openssl поскаржився на те, що обов’язкове поле Назва країни відсутнє, а в створеному сертифікаті щойно був CN у рядку теми. Здається, що -subjпараметр повністю замінює рядок теми і не дозволяє оновити жодне поле.

Це робить усі наступні три підходи постачання предметних полів виключними один для одного:

  • Підказки
  • конфігураційний файл
  • -subj варіант

Дякуємо, що підтвердили це. Це дійсно слід позначити як помилку. Коли я запускаю його, -subjігнорується, навіть якщо вказано після -config.
Отей

1

-batchНеобов'язковий параметр змушує openssl reqкоманду не запитувати для будь-якого з інформаційних полів. Я використовую його таким чином без конфігураційного файлу для автоматизації самопідписаних сертифікатів.

Це вказано в довідці:

openssl help req
...
...
-batch              Do not ask anything during request generation

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