Questão Como salvar um certificado SSL do servidor remoto localmente como um arquivo


Eu preciso baixar um certificado SSL de um servidor remoto (não HTTPS, mas o handshake SSL deve ser o mesmo que o Google Chrome / IE / wget e enrolar todos os erros de verificação de verificação de certificado) e adicionar o certificado como confiável em meus laptops Windows ' armazenamento de certificados, pois não consigo que meus funcionários de TI me forneçam o certificado da CA.

isso é para comunicações de escritório, então não posso realmente usar o cliente real para obter o certificado.

Como faço isso, tenho o Windows 7 e uma pilha de Linuxes úteis para que qualquer linguagem de ferramenta / script esteja bem.


263


origem


Para obter o certificado de um servidor de e-mail, Vejo security.stackexchange.com/questions/70528/… - That Brazilian Guy


Respostas:


Se você tiver acesso ao OpenSSL, tente

openssl s_client -connect {HOSTNAME}:{PORT} -showcerts

substituindo {HOSTNAME} e {PORT} por quaisquer valores que você tenha.


251



Eu prefiro esta opção porque não tenho que abrir uma GUI, e posso fazê-lo via SSH dos nossos servidores. - bramp
Além disso, ele funciona para protocolos diferentes de HTTP. - matt
solução de elec3647 automatiza totalmente a extração do PEM em um pipeline de shell. - phs
443 é a porta padrão para HTTPS. - Flimm
eu precisei -servername opção para obter o certificado de host virtual. gist.github.com/Artistan/5219484efb2fe51cd064175b3d0d5971 - Artistan


Um método rápido para obter o certificado puxado e baixado seria executar o seguinte comando que canaliza a saída do comando -showcerts para o comando x509 ssl, o qual simplesmente retira tudo o que é externo. Por exemplo:

openssl s_client -showcerts -connect server.edu:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >mycertfile.pem

Para usar o certificado, com wget,

wget https:/server.edu:443/somepage --ca-certificate=mycertfile.pem

183



Eu tentei isso (em outro site) - mas era esperado que a cadeia completa de certs: parece que isso só trouxe de volta o primeiro na cadeia - é que se espera? - monojohnny
Isso não está funcionando para mim: não é possível carregar o certificado 27262: erro: 0906D06C: PEM rotinas: PEM_read_bio: sem linha de partida: /SourceCache/OpenSSL098/OpenSSL098-50/src/crypto/pem/pem_lib.c: 648: Esperando: TRUSTED CERTIFICADO - Janusz
Eu concordo com o monojohnny, isso não te dá a cadeia completa. - Michael Munsey
Tarde mas @monojohnny: openssl s_client -showcerts exibe todos os certificados na cadeia recebida (se a conexão for bem-sucedida), mas openssl x509 leva apenas o primeiro e descarta o resto. Para obter todos eles, em vez disso, use ...| sed -n '/^-----BEGIN CERT/,/^-----END CERT/p' ou ...| awk '/^-----BEGIN CERT/,/^-----END CERT/' Você também pode usar um pouco mais complicado awk para colocar cada certificado em um arquivo separado que os torna mais fáceis de usar com openssl e algumas outras ferramentas. - dave_thompson_085
Para usar o certificado, com wget, wget https:/server.edu:443/somepage --ca-certificate=mycertfile.pem - MUY Belgium


Para ser honesto, eu nunca tentei isso antes (nunca precisei) no entanto, eu apenas tentei no Firefox e parece funcionar para salvar:

  1. Clique no ícone do certificado SSL no topo / cadeado na parte inferior.
  2. Clique View Certificate
  3. Clique no Details Aba
  4. Escolha qual certificado você quer da hierarquia [não circulado na imagem]
  5. Clique Export

alt text


111



É bom saber - mas, para minha curiosidade, você pode explicar um pouco mais o que está tentando realizar? Eu nunca precisei exportar um certificado de cliente SSL e estou muito curioso para saber por que você realmente precisaria fazer isso ... - William Hilsum
Isso é um certificado de servidor, não um certificado de cliente. O principal motivo para exportar uma chave privada e um certificado do cliente é manter um backup ou se você quiser autenticar usando outro navegador ou computador. - gbroiles
@gbroiles - leia a pergunta, ele usou a terminologia errada, mas isso resolveu seu problema. - William Hilsum
certo, e eu respondi a sua pergunta - por que alguém iria querer salvar um certificado de cliente? "Certificado de cliente SSL" foi o seu termo, não o seu. - gbroiles
Não parece que há uma maneira de fazer isso no Chrome, certo ?! - fatuhoku


Exportando um certificado usando o navegador Chrome

  1. Conecte-se ao site usando SSL (https: // whatever)

2. Clique no símbolo de bloqueio e, em seguida, clique em Detalhes

  1. Desde a versão 56 do Chrome, você faz o seguinte: vá para o menu Three Dots -> More Tools -> Developer Tools, depois clique na guia Security. Isso lhe dará uma Visão geral de segurança com um Ver certificado botão.

  2. Clique no Ver certificado botão.

    Uma janela modal será aberta. Tem dois painéis. A parte superior mostra a hierarquia de confiança do certificado do site (o último listado), o (s) certificado (s) intermediário (s) e o certificado raiz (o mais alto).

    O segundo painel, maior, mostra os detalhes de um dos certificados.

    Pode haver zero ou mais certificados intermediários.

    Observe que o certificado raiz tem um ícone com borda dourada. Os outros têm uma borda azul.

    Veja a imagem abaixo.

  3. Para exportar um certificado:

    1. Primeiro, clique no ícone do certificado na hierarquia de confiança.
    2. O certificado será mostrado na parte principal do modal.
    3. Clique no ícone grande do certificado na parte principal do modal. Arrastar o ícone na sua área de trabalho. O Chrome copiará o certificado para sua área de trabalho.

enter image description here


40



Eu tive que arrastar o ícone para um editor de texto, o desktop não funcionou para mim. - Cory Klein
Para o Chrome no Windows, depois de clicar em "Exibir certificado", o modal é diferente do Mac. Clique na guia Detalhes e, em seguida, Copiar para arquivo ... Em seguida, escolha o formato e o nome do arquivo, que é simples. - PolyTekPatrick
Quando uso o Chrome v63 no Mac OS, o arquivo de texto que recebo arrastando o certificado é legível, mas não em qualquer formato estruturado que possa descobrir como converter em um formato legível por máquina, como o X.509 .crt. - Jim DeLaHunt
nenhuma diferença se abrir a partir da barra de endereços ou a partir desta aba dev, e ainda não pode baixar crt ... - user25


Isto é gbroiles 'responda, mas eu queria ressaltar que o projeto cURL tem uma página com mais alguns detalhes em usar openssl para salvar o certificado SSL do servidor remoto:

  • openssl s_client -connect {HOSTNAME}: {PORTA} | logfile tee
  • Tipo QUIT e pressione a tecla Enter / Return.
  • O certificado será listado entre os marcadores "BEGIN CERTIFICATE" e "END CERTIFICATE".
  • Se você quiser ver os dados no certificado, você pode usar:

    openssl x509 -inform PEM -na certfile -text -out certdata

    Onde certfile é o certificado extraído de logfile. Olhar dentro certdata.


16





automatizado

-servername foi necessário para eu obter o certificado certo do host virtual em nosso servidor.

openssl s_client -showcerts -connect host.name.com:443 -servername host.name.com </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > host.name.com.pem

você também pode converter em um certificado para desktop

openssl x509 -inform PEM -in host.name.com.pem -outform DER -out host.name.com.cer

última parte é adicioná-lo ao seu certs, não tenho certeza no windows
para mac keychain eu usei, deveria ser similar ...

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain host.name.com.cer


4



gist.github.com/Artistan/5219484efb2fe51cd064175b3d0d5971 - Artistan


Isso fornecerá os resultados contendo apenas os certificados

echo QUIT | \
openssl s_client -showcerts -connect hostname:port | \
awk '/-----BEGIN CERTIFICATE-----/ {p=1}; p; /-----END CERTIFICATE-----/ {p=0}' "

1