¿Cómo puedo verificar los certificados SSL en la línea de comando?

52

Estoy tratando de validar / verificar que la clave rsa, el paquete ca y el certificado almacenados aquí estén bien. No están siendo atendidos por un servidor web. ¿Cómo puedo verificarlos?

xenoterracida
fuente
Mira la openssl x509sección del manual.
alex
El manual de verificación de OpenSSL puede ayudarlo aquí. Además, ver esta página tiene algunos excelentes ejemplos.
Stefan Lasiewski

Respuestas:

61

Suponiendo que sus certificados estén en formato PEM, puede hacer:

openssl verify cert.pem

Si su "ca-bundle" es un archivo que contiene certificados intermedios adicionales en formato PEM:

openssl verify -untrusted ca-bundle cert.pem

Si su openssl no está configurado para usar automáticamente un conjunto instalado de certificados raíz (por ejemplo, en /etc/ssl/certs), puede usar -CApatho -CAfileespecificar la CA.

Andy
fuente
99
¡Advertencia, el comando de apertura openssl es más permisivo de lo que cabría esperar! Por defecto, además de verificar el CAfile dado, también verifica cualquier CA coincidente en el directorio certs del sistema, por ejemplo / etc / ssl / certs. Para evitar este comportamiento y asegurarse de que está comprobando su certificado CA particular otorgado por CAfile, también debe pasar una opción -CApath con un directorio no existente, por ejemplo: openssl verificar -verbose -CApath nosuchdir -CAfile servidor cacert.pem .crt
DSimon
2
Una advertencia más: si utiliza -CApath nosuchdir, la combinación de server.crt y cacert.pem debe incluir la CA raíz; si openssl solo puede funcionar hasta una CA intermedia con esos archivos, entonces se quejará.
DSimon
Dice que no hay tal archivo /certs/. ¿causara esto un problema? porque estoy apilado en una situación en la que mi servidor funciona, http curl funciona, pero https .. curl obtiene un error. donde el sitio web dejó de funcionar.
Giorgi Gvimradze
18

Aquí hay una línea para verificar una cadena de certificados:

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

Esto no requiere instalar CA en ningún lado.

Ver https://stackoverflow.com/questions/20409534/how-does-an-ssl-certificate-chain-bundle-work para más detalles.

Vadzim
fuente
1
Advertencia, la opción -CAfile es más permisiva de lo que cabría esperar. Vea mi comentario sobre la respuesta aceptada para más detalles.
DSimon
1
@DSimon, agregué -CApath nosuchdiresto para responder. Gracias.
Vadzim
No hay problema, me alegro de ayudar. :-) Una advertencia que descubrí después de publicar mi comentario anterior: si el archivo especificado con -CAfilesí mismo es solo un certificado intermedio, openssl se quejará. Este es el comportamiento correcto, ya que verifyrequiere una cadena completa hasta una CA raíz, pero puede ser engañoso.
DSimon
2
Mi versión ( OpenSSL 1.1.1 11 Sep 2018) requiere que el argumento -CApathsea ​​un directorio existente.
Jake Cobb