'openssl verify' saídas 'incapazes de obter certificado de emissor local'

1

Em / etc / ssl, quando eu faço sudo openssl verify mywebsite.pem , recebo uma mensagem dizendo

    mywebsite.pem: OU = GT46830179, OU = See www.rapidssl.com/resources/cps (c)15, OU = Domain Control Validated - RapidSSL(R), CN = *.logitapp.com
error 20 at 0 depth lookup:unable to get local issuer certificate

Eu criei o mywebsite.key copiando do gerador de certificados do sslpoint para o nano. Eu criei mywebsite.pem executando sudo cat mywebsite.crt sslpointintermediate.crt >> mywebsite.pem . Criado mywebsite.crt e sslpointintermediate.crt colando em nano do e-mail sslpoint me enviou.

mywebsite.pem e mywebsite.key não são realmente os nomes dos arquivos.

Usando o Debian 8. Tentando obter o nginx e o gunicorn trabalhando com o ssl. Tendo problemas com isso e eu acho que é (pelo menos parcialmente) porque os certificados ssl de alguma forma não são instalados corretamente, como indicado pela saída acima. Como posso resolver isso?

EDITAR:

Em uma versão anterior desta questão eu também estava perguntando sobre 'openssl verify'ing o arquivo .key. Eu removi essa parte da questão, já que não adianta tentar isso.

    
por Daniel 05.09.2015 / 08:27

4 respostas

4

Se você quiser usar openssl verify , deverá usar:

openssl verify -CAfile your-intermediates-and-final.pem mywebsite.crt

com seu intermediário-e-final.pem com todos intermediário e final (âncora confiável) concatenados dentro, no formato PEM. Se você quiser usar a opção -CApath /etc/ssl/certs , cada certificado intermediário deve estar no diretório / etc / ssl / certs e você deve executar como root:

$ c_rehash

A chave contém apenas a chave privada e nenhum certificado, por isso não há sentido em "abrir a verificação".

O nginx parece estar corretamente configurado. Verifique se as permissões estão corretas e se você tem os dois parâmetros de configuração a seguir na seção server {} ou http {} :

ssl_certificate /path/to/your/mywebsite.pem;
ssl_certificate_key /path/to/your/mywebsite.key;

e na sua seção server {} :

listen 443 ssl;
    
por 05.09.2015 / 09:24
2

O OpenSSL só precisa ser executado como root quando precisar ler dados privados como chaves privadas em /etc/ssl/private/ . Para verificação de certificado, root não é necessário. Os certificados em /etc/ssl/certs devem ser legíveis por todos, para que todos os usuários e softwares possam verificar os certificados. Ou você entra com a senha do root toda vez que liga para um site?

$ openssl verify mywebsite.pem
mywebsite.pem: OU = GT46830179, OU = See www.rapidssl.com/resources/cps (c)15, OU = Domain Control Validated - RapidSSL(R), CN = *.logitapp.com
error 20 at 0 depth lookup:unable to get local issuer certificate

Olhando para a manpage de verify (1ssl):

   2 X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT: unable to get issuer certificate
       the issuer certificate of a looked up certificate could not be found. This normally means the list of trusted certificates is not complete.

Você precisa dar a openssl algumas informações sobre onde na cadeia os certificados são necessários:

openssl verify [-CApath directory] [-CAfile file] [-untrusted file] [certifictes]

Por exemplo:

openssl verify -CAfile RootCert.pem -untrusted Intermediate.pem UserCert.pem

Veja também esta pergunta sobre SO

$ openssl verify mywebsite.key I get a message saying
unable to load certificate
139893743232656:error:0906D06C:PEM routines:PEM_read_bio:no start line:pem_lib.c:703:Expecting: TRUSTED CERTIFICATE

O certificado não pôde ser carregado, pois você deu uma chave privada. Isso é o oposto de um certificado, que contém a chave pública com informações adicionais sobre a cadeia de certificados, a validade, etc. A mensagem de erro diz claramente o que é esperado: Expecting: TRUSTED CERTIFICATE

Você só precisa "instalar" um certificado raiz se ele ainda não é confiável para o seu sistema operacional e se você quiser que ele seja confiável. Mas, como você fala sobre servidores, não faz sentido incluir o certificado do seu próprio domínio no armazenamento confiável. Seu software (nginx), neste caso, precisa ter acesso a um arquivo de certificado, incluindo toda a cadeia de confiança, desde o certificado de folha do seu domínio até o certificado raiz da sua CA (opcional).

Por favor, veja a documentação do nginx, procure por outras perguntas deste tipo (a internet, incluindo SE e SF), ou dê uma descrição exata e detalhada do seu problema.

    
por 05.09.2015 / 09:17
0

Parece que o awscli usa seu sistema openssl local para verificar os certificados. No meu mac eu tenho openssl versão 0.9.8 e não pude verificar o meu certificado. Você pode verificar a versão do seu openssl escrevendo o comando

openssl version

Eu mudei para um sistema contendo a versão 0.10 do openssl e consertei o problema. Você também pode atualizar sua versão openssl também.

Eu tentei fazer o upload do certificado novamente e funcionou para mim.

    
por 12.08.2016 / 16:13
0

você precisa cat todas as certs para o final CA_Chain.crt:

cat RootCA.crt IntermediateCert1 IntermediateCert2 > CA_Chain.crt

openssl verify -CAfile CA_Chain.crt website.crt

(sinal de website.crt por IntermediateCert2)

    
por 16.09.2017 / 08:42