1

Как использовать переменную из пользовательского ввода в файле 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

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

[ req_distinguished_name ]
emailAddress                    = Email Address
emailAddress_max                = 64

....

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

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

X509v3 Subject Alternative Name:
    email: Email Address

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

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

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

и запустить:

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 на лету с правильным адресом электронной почты и другими уже настроенными деталями.

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