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