Eu recebo o seguinte erro de openssl req
:
unable to find 'distinguished_name' in config
problems making Certificate Request
41035:error:0E06D06C:configuration file routines:NCONF_get_string:no value:/SourceCache/OpenSSL098/OpenSSL098-52.30.1/src/crypto/conf/conf_lib.c:329:group=req name=distinguished_name
Meu entendimento é que este é o "Assunto" que ele não consegue encontrar ... no entanto, estou especificando que:
openssl req -new \
-key "$PRIVATE_KEY" \
-sha256 \
-config "$OPTIONS_FILE" \
-subj "/C=US/ST=California/L=San Francisco/O=ACME, Inc./CN=*.*.$DOMAIN/" \
-out "$CSR_FILENAME"
A única sugestão do manual é que o arquivo de configuração não exista; eu possocat "$OPTIONS_FILE"
, então está definitivamente lá, e o erro não é precedido pelo erro que o manual observa que seria precedido se fosse esse o caso, por isso tenho certeza que openssl
vê o arquivo de configuração.
Meu arquivo de configuração contém o seguinte:
[req]
req_extensions = v3_req
[ v3_req ]
# Extensions to add to a certificate request
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = *.*.example.com
... o que é praticamente o exemplo dos documentos .
O que eu estou fazendo errado aqui?
*.*.example.com
, é inválido. (Você pode ter apenas 1*
e apenas no componente mais à esquerda.) Isso não está relacionado ao problema aqui, mas não c / p cegamente.Respostas:
Perto do que sei ,
-config
está substituindo algum tipo de configuração interna; se você vir a seção "EXEMPLES" da página de manual do openssl req , ela mostra um exemplo de um arquivo de configuraçãodistinguished_name
. Em um palpite, adicionei o seguinte à minha configuração:Assim, toda a minha configuração parecia algo como
(Observe que aqui
${DOMAIN}
não é literal; você deve substituí-lo pelo seu nome de domínio DNS; eu crio esse arquivo em umbash
script comcat >"$OPTIONS_FILE" <<EOF
, seguido pelo acima, seguido porEOF
)openssl req … -subj <my subject> -config <that file> …
então peguei meu assunto na linha de comando. Para os interessados, o comando inteiro acabou parecendo:No momento desta publicação, 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 obrigatório², daí a necessidade da configuração. A única dica adicional que eu conheço para gerar um CSR de melhor prática para o acima é que você deve usar um tamanho de chave RSA de pelo menos 2048 bits (se você estiver usando RSA, o que eu sou); você deve especificar o tamanho para oopenssl genrsa
comando, pois o padrão atual é inseguro.Ile Embora não esteja quebrado no momento em que escrevo isso, as pessoas sentem que é apenas uma questão de tempo. Consulte "
Pôr gradualmente o SHA1" ²O uso de CN para o nome de domínio não é mais recomendado; Não tenho certeza de quando / se os navegadores planejam descontinuar isso. "Afaste-se de incluir e verificar seqüências de caracteres que se parecem com nomes de domínio no Nome comum do assunto.", RFC 6125
Nota: Tenho menos certeza sobre o valor "correto" de
keyUsage
.fonte
*.*.example.com
não é válida (você não pode ter vários*
s); c / p-tenha cuidado.req_distinguished_name
não é aceita pelo openssl 1.1.0f, portanto você precisa ter pelo menoscountryName_default
lá (consulte o Guia Aberto do Openssl.conf ).Eu tive o mesmo problema e encontrei a resposta aqui:
https://www.citrix.com/blogs/2015/04/10/how-to-create-a-csr-for-a-san-certificate-on-netscaler/
O arquivo de configuração fica assim:
E depois:
fonte
req_distinguished_name
seção pode ser deixada em branco. O que ele faz é especificar o modelo de rótulos dos nomes de campos necessários, que podem ser substituídos por-subj= /C=xx/ST=xx/L=xx/O=xx/OU=xx/CN=xx
etc., ou seja, para não atribuir esses valores de campo.Para mim, esse erro parece ser causado pela criação incorreta do caminho ao executar o comando no Windows Server 2012,
C:\OpenSSL-Win32\bin
que gera um erro sem bloqueio antes de solicitar o passe phare:
Claramente, o caminho é inválido devido à barra incorreta; portanto, o arquivo de configuração deve ser explicitamente anexado à linha de comando:
fonte
Este erro semelhante:
(Ubuntu 17.04) significava "você precisa adicionar
-subj "/C=US/ST=California/L=San Francis co/O=ACME, Inc./CN=*.*.$DOMAIN/"
para a linha de comando "FWIW.
fonte
Outro problema possível pode ser caracteres UTF-8 especiais (invisíveis). Verifique seu arquivo usando
fonte