Verificando certificados SSL desde la línea de comandos 2

Recientemente he necesitado revisar el vencimiento de certificados SSL mediante un script que me permitiera conocer el estado de los mismos en muchos servidores.

Una primer opción era ejecutar el comando openssl para verificar cada certificado:

$ openssl x509 -in certificado.pem -noout -enddate
notAfter=Oct 24 23:59:59 2014 GMT

y automatizarlo mediante conexiones ssh, pero el problema es que los certificados no tienen todos el mismo nombre, ni están instalados en el mismo directorio, pues algunos fueron instalados dependiendo del servicio.

Así que la opción fue utilizar openssl para abrir conexiones como cliente y verificar qué vencimiento tiene el certificado del servicio correspondiente:

$ echo | openssl s_client -connect servidor.com:443 2>/dev/null | openssl x509 -noout -dates
notBefore=Oct 24 00:00:00 2013 GMT
notAfter=Oct 24 23:59:59 2014 GMT

El echo inicial envía un enter al comando openssl para que el cliente no conectado y de esta forma con un listado de nombres de servidor y los puertos, se puede revisar toda una infraestructura de servidores y servicios.

Algunas argumentos que pueden ser pasados a openssl para obtener datos de certificados X509:

  • –dates fechas del período de validez del certificado
  • –enddate fecha de vencimiento
  • –subject titular del certificado y CN
  • –issuer autoridad de certificación
  • –fingerprint huella dactilar del certificado
  • –text toda la información del certificado

Estos comandos pueden ser utilizados en conjunto para obtener más de una información en la misma consulta:

$ echo | openssl s_client -connect servidor.com:443 2>/dev/null | openssl x509 -noout -dates -issuer -fingerprint
notBefore=Oct 24 00:00:00 2013 GMT
notAfter=Oct 24 23:59:59 2014 GMT
issuer= /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=EssentialSSL CA
SHA1 Fingerprint=6F:24:52:8F:10:E0:6D:AB:C9:BB:1D:52:65:F6:A8:47:89:BE:A3:5F

y quitando el -noout se obtiene el certificado:

$ echo | openssl s_client -connect servidor.com:443 2>/dev/null | openssl x509
-----BEGIN CERTIFICATE-----
MIIFIjCCBAqgAwIBAgIQMK1wptvY36IzHyscziufKTANBgkqhkiG9w0BAQUFADBy
MQswCQYDVQQGEwJHQjEbMBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD
...
nZpAVhzwHIS5wzMMHc5XRFvv3Ohnsco1CAA76HBBrMjmC6OYFXVDX+LgXjnTvuS8
lpg865wT5NUeWtWoRCOQydIHXqatpEyysbBZ/QbUA9CjjWViowRfYub2jZJ3v1k4
SsEYTJTsv3duHmn5Zn+dhINdVgVEJA==
-----END CERTIFICATE-----

y, por supuesto, para la consulta de un solo certificado, a veces es útil alguna herramienta web como esta de SSLShopper

2 thoughts on “Verificando certificados SSL desde la línea de comandos

  1. Pingback: Bitacoras.com

  2. Reply Sergio Mar 13,2015 15:06

    Excelente, de gran ayuda. Gracias estimado

Leave a Reply

  

  

  

Anti-Spam by WP-SpamShield