Como posso verificar os certificados SSL na linha de comando?

52

Estou tentando validar / verificar se a chave rsa, o pacote CA e o certificado armazenados aqui estão ok. Eles não estão sendo atendidos por um servidor da web. Como posso verificá-los?

xenoterracida
fonte
Veja a openssl x509seção do manual.
alex
O manual de verificação do OpenSSL pode ajudá-lo aqui. Além disso, veja esta página com alguns excelentes exemplos.
Stefan Lasiewski 07/07

Respostas:

61

Supondo que seus certificados estejam no formato PEM, você pode:

openssl verify cert.pem

Se o seu "ca-bundle" for um arquivo que contém certificados intermediários adicionais no formato PEM:

openssl verify -untrusted ca-bundle cert.pem

Se o seu openssl não estiver configurado para usar automaticamente um conjunto instalado de certificados raiz (por exemplo, in /etc/ssl/certs), você poderá usar -CApathou -CAfileespecificar a CA.

Andy
fonte
9
Atenção, o comando openssl confirm é mais permissivo do que você imagina! Por padrão, além de verificar o CAfile fornecido, ele também verifica se há CAs correspondentes no diretório certs do sistema, por exemplo, / etc / ssl / certs. Para evitar esse comportamento e verificar se você está verificando seu certificado CA específico fornecido pelo CAfile, também deve passar uma opção -CApath com um diretório inexistente, por exemplo: openssl verifica -verbose -CApath nosuchdir -CAfile cacert.pem server .crt
DSimon
2
Mais uma advertência: se você usar -CApath nosuchdir, a combinação de server.crt e cacert.pem deve incluir a CA raiz; se o openssl puder trabalhar apenas com uma CA intermediária com esses arquivos, ele reclamará.
precisa saber é o seguinte
Ele diz que não existe esse arquivo /certs/. isso causará um problema? porque estou empilhado em uma situação em que meu servidor funciona, o http curl funciona, mas https .. curl recebe erro. onde o site parou de funcionar.
Giorgi Gvimradze 28/10
18

Aqui está uma linha para verificar uma cadeia de certificados:

openssl verify -verbose -x509_strict -CAfile ca.pem -CApath nosuchdir cert_chain.pem

Isso não requer a instalação da CA em nenhum lugar.

Consulte https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-work para obter detalhes.

Vadzim
fonte
11
Aviso, a opção -CAfile é mais permissiva do que você imagina. Veja meu comentário sobre a resposta aceita para obter detalhes.
DSimon
11
@ DSimon, eu adicionei -CApath nosuchdirisso para responder. Obrigado.
Vadzim 21/01
Não tem problema, feliz em ajudar. :-) Uma ressalva que descobri depois de postar meu comentário anterior: se o arquivo especificado -CAfilefor apenas um certificado intermediário, o openssl reclamará. Esse é um comportamento correto, pois verifyrequer uma cadeia completa até a CA raiz, mas pode ser enganoso.
DSimon
2
Minha versão ( OpenSSL 1.1.1 11 Sep 2018) exige que o argumento -CApathseja um diretório existente.
Jake Cobb