Salvar certificado SSL remoto via linha de comando do Linux

28

Você consegue pensar em algum método de linha de comando do Linux para salvar o certificado apresentado por um servidor HTTPS? Algo parecido com curl / wget / openssl estabelece uma conexão SSL e salva o certificado em vez do conteúdo da resposta HTTP.

O gui equivalente ao que eu estou procurando seria navegar até o site HTTPS, clicar duas vezes no ícone "site seguro" do navegador e exportar o certificado. Exceto que o objetivo aqui é fazê-lo de maneira não interativa.

Obrigado Jim


fonte

Respostas:

40

Algo como:

openssl s_client -servername remote.server.net -connect remote.server.net:443 </dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' >/path/to/certificate.pem

É isso que eu uso com o fetchmail para recuperar o certificado de um servidor IMAP ou POP3 com capacidade para SSL (exceto que obviamente eu não uso a porta 443)

(Observe que o -servernameparâmetro "redundante" é necessário para opensslfazer uma solicitação com suporte SNI.)

Cry Havok
fonte
1
Alguma maneira de obter toda a cadeia?
Collin Anderson
9

Em http://www.madboa.com/geek/openssl/#cert-retrieve

#!/bin/sh
#
# usage: retrieve-cert.sh remote.host.name [port]
#
REMHOST=$1
REMPORT=${2:-443}

echo |\
openssl s_client -connect ${REMHOST}:${REMPORT} 2>&1 |\
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'
Matt Simmons
fonte