Haga una verificación del dominio del certificado SSL

Haga una verificación del dominio del certificado SSL

Estoy intentando crear un script que pruebe si un sitio web utiliza un certificado no autofirmado válido para su dominio. Lo que significa que no mostraría una advertencia en el navegador.

lo he probado con

openssl s_client -connect www.example.com:443 -servername www.example.com

Aunque el certificado no es válido para el dominio, sigo recibiendo:

Verificar código de retorno: 0 (ok)

¿Alguna idea de cómo puedo lograrlo?

Respuesta1

Si desea que openssl verifique realmente el certificado, debe indicárselo.

1. Comprobar si el nombre de host en el certificado coincide con el nombre que desea

Hay una opción específica para eso -verify_hostname. En el siguiente comando, lo uso en serverfault.com pero lo comparo con el nombre de host example.com:

[jenny@temeraire crt] $ openssl s_client -verify_hostname example.com  -connect serverfault.com:443
CONNECTED(00000003)
[...]
    Verify return code: 62 (Hostname mismatch)
---
DONE

Sin embargo, el código de retorno del proceso en sí sigue siendo 0, lo que significa que debe mirar el resultado en lugar de usar el código de retorno en una prueba.

2. Comprobar si el certificado proviene de una CA confiable

Lo ejecuté en el sitio web serverfault.com, sin darle una lista de CA confiables para verificar nuevamente para garantizar que fallará la verificación:

[jenny@galactica tmp] $ openssl s_client -verify 2 -connect serverfault.com:443
[...]
    Verify return code: 27 (certificate not trusted)

Sin embargo, openssl aún le dará el código de retorno 0, ya que el comando realmente se ejecutó correctamente, lo que dificulta la creación de scripts.

Una mejor manera de hacerlo sería descargar primero el certificado y luego ejecutarlo openssl verify:

[jenny@galactica tmp] $ openssl verify selfsignedcert.pem; echo $?
selfsignedcert.pem: C=SE, O="Nevermind", CN=foo.example.com
error 18 at 0 depth lookup: self signed certificate
18

Como puede ver, obtuve el código de retorno 18 que significa "certificado autofirmado". Hay varios otros códigos de error; consulte la página de manual para verifyobtener más información.

información relacionada