Nos arquivos de configuração do OpenSSL, você pode usar um valor de uma seção diferente usando ${section::name}
. No entanto, parece que eles são analisados no início do processo (antes da entrada do usuário) e, portanto, uma linha como:
[ req_distinguished_name ]
emailAddress = Email Address
emailAddress_max = 64
....
[usr_cert]
# Extensions for client certificates ('man x509v3_config').
subjectAltName = email:${req_distinguished_name::emailAddress}
resultaria em um nome alternativo de assunto:
X509v3 Subject Alternative Name:
email: Email Address
(assumindo que Email Address
é o prompt) e não o endereço de e-mail inserido.
Uma alternativa é ter seu endereço de e-mail como uma variável de ambiente, definir antes de executar o OpenSSL e usar o seguinte em sua configuração:
[usr_cert]
# Extensions for client certificates ('man x509v3_config').
subjectAltName = email:${ENV::email_address}
e execute:
email_address="[email protected]" openssl req -new -newkey test.key -out test.csr -nodes
A solicitação resultante ( test.csr
) terá:
X509v3 Subject Alternative Name:
email: [email protected]
Isso pode não funcionar para você, dependendo da sua aplicação, mas é provavelmente o mais próximo que você pode conseguir.
Ainda outra alternativa seria um script que gera uma configuração do OpenSSL on-the-fly com o endereço de e-mail correto e outros detalhes já configurados.