Baixe o certificado de servidor autoassinado

Baixe o certificado de servidor autoassinado

Resumo
Preciso baixar um certificado autoassinado de um servidor para criar um arquivo .JKS para usar como armazenamento confiável em um aplicativo. Como posso fazer isso em um servidor Red Hat?

O que eu tentei
Eu tentei usar o openssl para obter o certificado:

echo -n | openssl s_client -connect hostname.example.com:20000 -showcerts | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > downloadedcerts.cert

Isso falha com a seguinte mensagem:

verify error:num=19:self signed certificate in certificate chain

Na verdade, o certificado raiz deste servidoréautoassinado e não de uma CA. Estou bem com isso - o certificado raiz pertence a uma agência governamental do meu país - mas o openssl não se conecta para baixar o certificado.

Seria fácil carregar o URL no Firefox, ignorar manualmente o erro do certificado e fazer o download do certificado, mas não consigo me conectar ao servidor a partir da minha máquina desktop por causa de firewalls.

Qualquer ajuda seria muito apreciada :)

Responder1

verifique o erro:num=19:certificado autoassinado na cadeia de certificados

Na verdade, o certificado raiz deste servidor é autoassinado e não de uma CA.

É uma CA, mas não é confiável;)

Ao contrário dos navegadores (que confiam em quase tudo), o OpenSSL não confia em nada (você precisa dizer em que confiar).


Baixe o certificado CA do seu país (geralmente énãoenviado na cadeia). Isso énãoenviado na cadeia porque é um ponto de confiança; você já tem que ter e confiar nele.

Geralmente você pode encontrar o certificado CA online. Por exemplo,aquié da DigiCert,aquié Verisign, etc. Verifique o certificado que você baixou. A verificação é a parte complicada - os navegadores resolvem isso carregando seu próprio pacote de certificados já verificados.

Coloque o certificado CA do seu país em seu próprio arquivo. Então, use openssl s_client -connect hostname.example.com:20000 -CAfile my-country-ca.pem. s_clientcompletará com Verify OK (0)ou similar.

Responder2

Eu recomendaria criar sua própria Autoridade de Certificação [EDIT - não o que era desejado. veja o próximo parágrafo]. É uma espécie de PITA e quando você pesquisa como fazer parece mais difícil do que realmente é. Você acabou de criar uma empresa fictícia cujo certificado você colocará na raiz confiável dos clientes e ela poderá assinar o(s) certificado(s) em vez de usar certificados autoassinados.

Encontrei uma explicação na resposta do Bruno para esta pergunta aqui: https://stackoverflow.com/questions/4103472/ssl-handshake-fails-with-a-verisign-chain-certificate-that-contains-two-ca-s

Eu não estava pensando em um certificado raiz como autoassinado, mas faz sentido. Então, se bem entendi, você está obtendo o certificado que deseja (o primeiro), mas também todo o resto da cadeia de certificados. O certificado raiz é aquele que causa a mensagem.

informação relacionada