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