No Chrome, clicar no ícone verde de cadeado HTTPS abre uma janela com os detalhes do certificado:
Quando tentei o mesmo com cURL, obtive apenas algumas das informações:
$ curl -vvI https://gnupg.org
* Rebuilt URL to: https://gnupg.org/
* Hostname was NOT found in DNS cache
* Trying 217.69.76.60...
* Connected to gnupg.org (217.69.76.60) port 443 (#0)
* TLS 1.2 connection using TLS_DHE_RSA_WITH_AES_128_CBC_SHA
* Server certificate: gnupg.org
* Server certificate: Gandi Standard SSL CA
* Server certificate: UTN-USERFirst-Hardware
> HEAD / HTTP/1.1
> User-Agent: curl/7.37.1
> Host: gnupg.org
> Accept: */*
Alguma idéia de como obter as informações completas do certificado de uma ferramenta de linha de comando (cURL ou outra)?
Você deve poder usar o OpenSSL para sua finalidade:
Esse comando se conecta ao site desejado e canaliza o certificado no formato PEM para outro comando openssl que lê e analisa os detalhes.
-servername
(Observe que o parâmetro "redundante" é necessário paraopenssl
fazer uma solicitação com suporte SNI.)Informações básicas do certificado
Esse é o meu script diário:
Resultado:
Informações completas do certificado
O
-p 443
especifica para varrer apenas a porta 443. Todas as portas serão verificadas se for omitida e os detalhes do certificado para qualquer serviço SSL encontrado serão exibidos. O--script ssl-cert
diz ao mecanismo de script do Nmap para executar apenas ossl-cert
script. A partir do documento, este script "(r)recupera o certificado SSL de um servidor. A quantidade de informações impressas sobre o certificado depende do nível de detalhamento".Saída de amostra:
Depende do tipo de informação que você deseja, mas:
deve dar-lhe mais, embora não tão bem legível como o Chrome apresenta.
Para completar: se você instalou em seu sistema Java 7 ou superior
mostra a cadeia (como servida) com quase todos os detalhes em um formato bastante feio.
Se você deve ter o Java instalado no seu sistema, não respondo.
Se você quiser fazer isso no Windows, pode usar o PowerShell com a seguinte função:
Isso permite que você faça algumas coisas legais como
Se você quiser apenas a data de validade (que não é exatamente a resposta, mas é 9/10 para o que as pessoas usam os detalhes do certificado do Chrome), você pode usar:
echo | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate
Útil para scripts etc.
Para verificar os detalhes do certificado SSL, uso a seguinte ferramenta de linha de comando desde que ela se tornou disponível:
https://github.com/azet/tls_tools
É ótimo verificar se você tem todas as informações corretas para reemitir certificados ou validar os existentes, e também como poucas dependências E não requer configuração.
É assim que as primeiras linhas da saída se parecem:
Essa saída é seguida por toda a cadeia de certificados no mesmo nível de detalhe.
O que eu gosto é que em vez de ser uma ferramenta cli centrada em SSL como o s_client do openssl, esta tenta apenas fazer o único trabalho que precisamos na maioria das vezes. É claro que o openssl é mais flexível (ou seja, também verificando clientcerts, imaps em portas ímpares, etc.) - mas nem sempre preciso disso.
Alternativamente, se você tiver tempo para cavar e configurar ou apreciar mais recursos, existe a ferramenta maior chamada sslyze (não a usando desde dependências e instalação ...)
Eu uso um script de shell para isso. É apenas um wrapper em torno do comando openssl que me salva de lembrar a sintaxe.
Ele fornece opções para analisar a maioria das informações de certificado nas quais normalmente estou interessado ou exibir a saída rawssl bruta.
Pode consultar um arquivo de certificado local ou um servidor remoto.
Uso:
Você pode obter o script aqui: https://web.archive.org/web/20190528035412/http://giantdorks.org/alain/shell-script-to-check-ssl-certificate-info-like-expiration-date -e-assunto/