4

Я хочу использовать openssl для создания CSR, предоставляя некоторые ответы для названия страны, штата или провинции и т.д., Но все же хочу, чтобы он запрашивал общее имя (FQDN). Пока что у меня есть что-то вроде:

openssl req -new -sha256 -key example.com.key -out example.com.csr -subj "/C = US/ST = Огайо /L = Колумбус /O = Виджеты Inc /OU = Некоторые единицы"

Это, однако, не побуждает меня к общему имени. Как правильно это сделать?

2 ответа2

5

Вы можете сделать это в командной строке с помощью read и с помощью переменной результата в вашей команде openssl :

read -p "FQDN? " cn; openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout $cn.key -subj "/CN=$cn\/emailAddress=admin@$cn/C=US/ST=Ohio/L=Columbus/O=Widgets Inc/OU=Some Unit" -out $cn.csr

Если это то, что вы делаете часто, сделайте это функцией и добавьте ее в файл .bashrc , что позволит вам заменить подсказку аргументом:

function csr { openssl req -new -newkey rsa:2048 -sha256 -nodes -keyout $1.key -subj "/CN=$cn\/emailAddress=admin@$1/C=US/ST=Ohio/L=Columbus/O=Widgets Inc/OU=Some Unit" -out $1.csr }

Затем вызывайте его всякий раз, когда вам это нравится:

csr example.com

Следующий файл openssl.conf делает почти то же самое:

[req]
default_bits=2048
encrypt_key=no
default_md=sha256
distinguished_name=req_subj
[req_subj]
commonName="Fully Qualified Domain Name (FQDN)"
emailAddress="Administrative Email Address"
countryName="Country Name (2 letter code)"
countryName_default=US
stateOrProvinceName="State Name (full name)"
stateOrProvinceName_default=Ohio
localityName="Locality Name (e.g., city)"
localityName_default=Columbus
organizationName="Organization Name (e.g., company)"
organizationName_default=Widgets Inc
organizationalUnitName="Organizational Unit Name (e.g., section)"
organizationalUnitName_default=Some Unit

Затем либо установите переменную среды OPENSSL_CONF в этот файл

export $OPENSSL_CONF=~/.dotfiles/openssl.conf

или укажите это через переключатель на CLI

openssl req -new -config openssl.conf -keyout example.key -out example.csr

Я говорю почти потому, что он по-прежнему запрашивает у вас эти атрибуты, но теперь они по умолчанию, так что вы можете просто вбить ключ Return до конца после указания домена и вашей электронной почты.

1

Я не уверен, есть ли способ сделать это только из значений командной строки. Я всегда использовал конфигурационный файл для достижения этой цели. Например, записи для установки значений по умолчанию в вашей конфигурации могут выглядеть следующим образом:

policy = policy_anything

# For the 'anything' policy, which defines allowed DN fields
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
commonName = supplied
name = optional
emailAddress = optional

####################################################################
# request handling

[ req ]
default_bits = 2048
default_keyfile = private/key.pem
default_md = default
distinguished_name = standard_dn

####################################################################
# DN (Subject) handling

[ standard_dn ]

countryName = Country Name (2 letter code)
countryName_default = US
countryName_min = 2
countryName_max = 2

stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = California

localityName = Locality Name (eg, city)
localityName_default = Beverily Hills

commonName = Common Name (eg, YOUR name)
commonName_default = John Smith
commonName_max = 64

emailAddress = Email Address
emailAddress_default = jhn.smith@somewhere.com
emailAddress_max = 64

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .