возможно ли сделать так, чтобы openssl пропускал запросы стран / общих названий? - PullRequest
69 голосов
/ 10 ноября 2011

Есть ли способ заставить 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 ]

109 голосов
/ 11 ноября 2011

благодаря @ indiv

в соответствии с этим гидом -subj - путь, например

-subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'
30 голосов
/ 12 марта 2012

Другое решение состоит в использовании в вашем файле конфигурации директивы prompt.
См. OpenSsl: формат файла конфигурации

prompt

если установлено значение no, это отключает запрос полей сертификата и просто принимает значения из файла конфигурации напрямую.Также изменяется ожидаемый формат разделов distinguished_name и attributes.

Существует два отдельных формата для разделов distinguished name и attribute.

Если для параметра приглашения установлено значение no, то эти разделы состоят только из имен полей и значений : например,

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

Это позволяет внешним программам (например, на основе графического интерфейса пользователя) генерировать файл шаблона со всеми именами и значениями полей и просто передавать его в req.

В качестве альтернативы, если опция приглашения отсутствует или не установлена ​​в значение no, тогдафайл содержит поле подсказки информации.Он состоит из строк вида:

 fieldName="prompt"
 fieldName_default="default field value"
 fieldName_min= 2
 fieldName_max= 4
11 голосов
/ 08 апреля 2017

Создайте файл конфигурации, и в разделе [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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...