Por mais que eu possa dizer , -config
está sobrescrevendo algum tipo de configuração interna; Se você ver a seção "EXEMPLOS" para a página de manual do openssl req , mostra um exemplo de arquivo de configuração com distinguished_name
nele. Em um palpite, adicionei o seguinte à minha configuração:
[req]
…
distinguished_name = req_distinguished_name
[req_distinguished_name]
# empty.
Assim, toda a minha configuração parecia algo como
[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[v3_req]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.${DOMAIN}
(Observe que aqui, ${DOMAIN}
não é literal; você deve substituí-lo pelo seu nome de domínio DNS; eu crio este arquivo em um script bash
com cat >"$OPTIONS_FILE" <<EOF
, seguido pelo acima, seguido por EOF
)
openssl req … -subj <my subject> -config <that file> …
então pegou meu assunto da linha de comando. Para os interessados, todo o comando acabou parecendo:
openssl req -new \
-key "$PRIVATE_KEY" \
-sha256 \
-config "$OPTIONS_FILE" \
-subj "/C=US/ST=California/L=San Francisco/O=My Company, Inc./CN=*.*.$DOMAIN/" \
-out "$CSR_FILENAME"
A partir desta postagem, meu entendimento é que o SHA-1 está obsoleto¹ para certificados X. 509, portanto -sha256
(que é um sinalizador não documentado…) e subjectAltName está se tornando necessário², daí a necessidade da configuração. A única pegadinha adicional que conheço para gerar um CSR de melhor prática é que você deve usar um tamanho de chave RSA de pelo menos 2048 bits (se você estiver usando RSA, que eu sou); você deve especificar o tamanho para o comando openssl genrsa
, já que o padrão atual é inseguro.
¹ Embora não esteja quebrado no momento em que estou escrevendo isso, as pessoas acham que é apenas uma questão de tempo. Consulte "Diminuir gradualmente o SHA1"
²Usando CN para o nome de domínio não é mais recomendado; Não tenho certeza quando / se os navegadores estão planejando descartar isso. "Afaste-se de incluir e verificar strings que se parecem com nomes de domínio no Nome Comum do assunto.", RFC 6125
Nota: Estou menos certo sobre o valor "correto" de keyUsage
.