Ответ 1
благодаря @indiv
в соответствии с этим guide -subj
- это способ, например,
-subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'
Есть ли способ сделать 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}
благодаря @indiv
в соответствии с этим guide -subj
- это способ, например,
-subj '/CN=www.mydom.com/O=My Company Name LTD./C=US'
Другое решение состоит в использовании в вашем файле конфигурации директивы prompt
.
См. OpenSsl: Формат файла конфигурации
prompt
если установлено значение
no
, это отключает запрос полей сертификата и просто принимает значения из файла конфигурации напрямую. Он также изменяет ожидаемый формат разделовdistinguished_name
иattributes
.Существует два разных формата для разделов
distinguished name
иattribute
.Если для параметра приглашения установлено значение
no
, то эти разделы состоят только из имен полей и значений: например,
CN=My Name
OU=My Organization
[email protected]
Это позволяет внешним программам (например, на основе графического интерфейса) генерировать файл шаблона со всеми именами полей и значениями и просто передавать его на
req
.Альтернативно, если параметр приглашения отсутствует или не установлен в no, то файл содержит информацию о запросе поля. Он состоит из линий вида:
fieldName="prompt"
fieldName_default="default field value"
fieldName_min= 2
fieldName_max= 4
Создайте файл конфигурации, а в секции [req] вы можете установить приглашение = нет.
Например:
[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 = [email protected]
[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
Смешанный подход не поддерживается
Может быть интуитивно понятно, что возможен смешанный подход, когда вы можете подумать о том, чтобы поместить некоторые статические поля в openssl.cnf и указать некоторые (CN) с помощью опции -subj
. Однако это не работает.
Я проверил сценарий, где я
req_distinguished_name
иopenssl req
с
-subj=/CN=www.mydom.com
.openssl пожаловался на то, что обязательное поле "Название страны" отсутствует, и в сгенерированном сертификате только что был CN в строке темы. Похоже, опция -subj
полностью перекрывает строку темы и не позволяет обновлять одно поле.
Это делает все следующие три подхода к предоставлению предметных полей эксклюзивными друг для друга:
-subj