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