variável de uso OpenSSL CNF

1

Como eu uso uma variável da entrada do usuário em um arquivo CNF do OpenSSL?

Eu tenho o seguinte CNF:

[ req_distinguished_name ]
emailAddress = Email Address

# specify defaults
emailAddress_default = [email protected]

Como posso usar o e-mail que o usuário escolhe para a opção emailAddress na seção a seguir sem usar um script para gerar o CNF?

[ usr_cert ]
# Extensions for client certificates ('man x509v3_config').
subjectAltName = email:[email protected]
    
por Kyle B 31.07.2018 / 15:19

1 resposta

0

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.

    
por 31.07.2018 / 16:07

Tags