OpenSSL CNF использовать переменную

262
Kyle B

Как использовать переменную из пользовательского ввода в файле OpenSSL CNF?

У меня есть следующий CNF:

[ req_distinguished_name ] emailAddress = Email Address  # specify defaults emailAddress_default = John.Smith@company.mail 

Как я могу использовать электронную почту, которую пользователь выберет для emailAddressопции в следующем разделе, не используя скрипт для генерации CNF?

[ usr_cert ] # Extensions for client certificates (`man x509v3_config`). subjectAltName = email:John.Smith@company.mail 
1

1 ответ на вопрос

0
garethTheRed

В файлах конфигурации OpenSSL вы можете использовать значение из другого раздела, используя $. Тем не менее, кажется, что они анализируются на ранних этапах процесса (до ввода пользователя) и, следовательно, такие строки, как:

[ req_distinguished_name ] emailAddress = Email Address emailAddress_max = 64  ....  [usr_cert] # Extensions for client certificates (`man x509v3_config`). subjectAltName = email:$ 

приведет к альтернативному имени субъекта:

X509v3 Subject Alternative Name: email: Email Address 

(при условии, что Email Addressэто подсказка), а не введенный адрес электронной почты.

В качестве альтернативы можно указать свой адрес электронной почты в качестве переменной среды, задать его перед запуском OpenSSL и использовать в своей конфигурации следующее:

[usr_cert] # Extensions for client certificates (`man x509v3_config`). subjectAltName = email:$ 

и запустить:

email_address="johndoe@example.com" openssl req -new -newkey test.key -out test.csr -nodes 

Результирующий запрос ( test.csr) будет иметь:

X509v3 Subject Alternative Name: email: johndoe@example.com 

Это может не сработать для вас, в зависимости от вашего приложения, конечно, но, вероятно, это самое близкое, что вы можете получить.

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

Похожие вопросы