¿Cómo verificar cuál de los dominios (si corresponde) es válido para este certificado?

1

Considera esto:

$ nmap security.stackexchange.com -oX - -p 443 --script=ssl-cert | grep 'pem'
<elem key="pem">-&#45;&#45;&#45;&#45;BEGIN CERTIFICATE-&#45;&#45;&#45;&#45;&#xa;MIIGsjCCBZqgAwIBAgIQCTaYT9gNC0RFj3x3zaPxZDANBgkqhkiG9w0BAQsFADBw&#xa;MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3&#xa;d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz&#xa;dXJhbmNlIFNlcnZlciBDQTAeFw0xNjA1MjEwMDAwMDBaFw0xOTA4MTQxMjAwMDBa&#xa;MGoxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJOWTERMA8GA1UEBxMITmV3IFlvcmsx&#xa;HTAbBgNVBAoTFFN0YWNrIEV4Y2hhbmdlLCBJbmMuMRwwGgYDVQQDDBMqLnN0YWNr&#xa;ZXhjaGFuZ2UuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr0YD&#xa;zscT5i6T2FaRsTGNCiLB8OtPXu8N9iAyuaROh/nS0kRRsN8wUMk1TmgZhPuYM6oF&#xa;S377V8W2LqhLBMrPXi7lnhvKt2DFWCyw38RrDbEsM5dzVGErmhux3F0QqcTI92zj&#xa;VW61DmE7NSQLiR4yonVpTpdAaO4jSPJxn8d+4p1sIlU2JGSk8LZSWFqaROc7KtXt&#xa;lWP4HahNRZtdwvL5dIEGGNWx+7B+XVAfY1ygc/UisldkA+a3D2+3WAtXgFZRZZ/1&#xa;CWFjKWJNMAI6ZBAtlbgSNgRYxdcdleIhPLCzkzWysfltfiBmsmgz6VCoFR4KgJo8&#xa;Gd3MeTWojBthM10SLwIDAQABo4IDTDCCA0gwHwYDVR0jBBgwFoAUUWj/kK8CB3U8&#xa;zNllZGKiErhZcjswHQYDVR0OBBYEFFrBQmPCYhOznZSEqjIeF8tto4Z7MIIBfAYD&#xa;VR0RBIIBczCCAW+CEyouc3RhY2tleGNoYW5nZS5jb22CEXN0YWNrZXhjaGFuZ2Uu&#xa;Y29tghFzdGFja292ZXJmbG93LmNvbYITKi5zdGFja292ZXJmbG93LmNvbYINc3Rh&#xa;Y2thdXRoLmNvbYILc3N0YXRpYy5uZXSCDSouc3N0YXRpYy5uZXSCD3NlcnZlcmZh&#xa;dWx0LmNvbYIRKi5zZXJ2ZXJmYXVsdC5jb22CDXN1cGVydXNlci5jb22CDyouc3Vw&#xa;ZXJ1c2VyLmNvbYINc3RhY2thcHBzLmNvbYIUb3BlbmlkLnN0YWNrYXV0aC5jb22C&#xa;GCoubWV0YS5zdGFja2V4Y2hhbmdlLmNvbYIWbWV0YS5zdGFja2V4Y2hhbmdlLmNv&#xa;bYIQbWF0aG92ZXJmbG93Lm5ldIISKi5tYXRob3ZlcmZsb3cubmV0gg1hc2t1YnVu&#xa;dHUuY29tgg8qLmFza3VidW50dS5jb22CEXN0YWNrc25pcHBldHMubmV0MA4GA1Ud&#xa;DwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwdQYDVR0f&#xa;BG4wbDA0oDKgMIYuaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL3NoYTItaGEtc2Vy&#xa;dmVyLWc1LmNybDA0oDKgMIYuaHR0cDovL2NybDQuZGlnaWNlcnQuY29tL3NoYTIt&#xa;aGEtc2VydmVyLWc1LmNybDBMBgNVHSAERTBDMDcGCWCGSAGG/WwBATAqMCgGCCsG&#xa;AQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20vQ1BTMAgGBmeBDAECAjCB&#xa;gwYIKwYBBQUHAQEEdzB1MCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2Vy&#xa;dC5jb20wTQYIKwYBBQUHMAKGQWh0dHA6Ly9jYWNlcnRzLmRpZ2ljZXJ0LmNvbS9E&#xa;aWdpQ2VydFNIQTJIaWdoQXNzdXJhbmNlU2VydmVyQ0EuY3J0MAwGA1UdEwEB/wQC&#xa;MAAwDQYJKoZIhvcNAQELBQADggEBABC0Q7CJwKDVFD97KCgMudMo1eNzfxjZRZjs&#xa;t9C+B7WXr+kJmsKFRwK4wZrWb8rBb0d4M+vQfTGTT7S0JIp0+4WLmkQ7i+0YA90l&#xa;eAhS0KuC4p8M+KzMLovgdc/B9/bQVGuQNuLfiZOCYvM25xlMSS/awoWZh5EJBEyE&#xa;vIgJeK+0LfEOMqPNmrelfKVQklXkbbsCREfeDdX1jIwYeXXy8GGfJZSnnbQd14iU&#xa;6DAI/9WBxyokj5Pp53esXahLyBGTL8jrfy5E4P4SYTF/WJsUK283SrS3Mv9ftmho&#xa;4Sq2zWnDrQ6li2do0YHJIqkJZKrjTevgpvnyFLtvvd40pU5D/PU=&#xa;-&#45;&#45;&#45;&#45;END CERTIFICATE-&#45;&#45;&#45;&#45;&#xa;</elem>

¿Existe una herramienta de línea de comandos (o una biblioteca) que me permita saber fácilmente si este certificado es de confianza y para qué dominio (s) es válido?

    
pregunta d33tah 18.08.2016 - 19:15
fuente

2 respuestas

8

Primero necesitas descodificar todas las entidades HTML / XML como &#45; etc. Una vez que hayas hecho esto, obtendrás algo como esto:

-----BEGIN CERTIFICATE-----
MIIGsjCCBZqgAwIBAgIQCTaYT9gNC0RFj3x3zaPxZDANBgkqhkiG9w0BAQsFADBw
...
-----END CERTIFICATE-----
  

para qué dominio (s) es válido?

Luego, podría usar openssl x509 -in yourfile -text , que le brinda los detalles del certificado, incluidos los dominios para los que está este certificado:

...
Subject: C=US, ST=NY, L=New York, O=Stack Exchange, Inc., CN=*.stackexchange.com
Issuer: C=US, O=DigiCert Inc, OU=www.digicert.com, CN=DigiCert SHA2 High Assurance Server CA

...
X509v3 Subject Alternative Name: 
  DNS:*.stackexchange.com, DNS:stackexchange.com, DNS:stackoverflow.com, 
  DNS:*.stackoverflow.com, DNS:stackauth.com, DNS:sstatic.net, 
  DNS:*.sstatic.net, DNS:serverfault.com, DNS:*.serverfault.com,      
  DNS:superuser.com, DNS:*.superuser.com, DNS:stackapps.com, 
  DNS:openid.stackauth.com, DNS:*.meta.stackexchange.com, 
  DNS:meta.stackexchange.com, DNS:mathoverflow.net, DNS:*.mathoverflow.net, 
  DNS:askubuntu.com, DNS:*.askubuntu.com, DNS:stacksnippets.net
  

si este certificado es de confianza

Para verificar si este certificado es de confianza, necesita tener el almacén de confianza con el que desea verificar. Y es probable que necesite obtener algún certificado intermedio. Una vez que tenga esto, consulte la descripción detallada en Use openssl para verificar individualmente los componentes de una cadena de certificados .

    
respondido por el Steffen Ullrich 18.08.2016 - 20:07
fuente
1

Steffen Ullrich ya tiene respondida para el caso de analizar la salida de nmap security.stackexchange.com -oX - -p 443 --script=ssl-cert

Sin embargo, si no necesitas usar nmap, te recomiendo que uses simplemente openssl:

  

openssl s_client -connect security.stackexchange.com:443

La salida contendrá el certificado pem en texto sin formato, y Verify return code: 0 (ok) significa que es de confianza (otras opciones se autofirmarán, etc.) Si no encuentra su almacén de confianza automáticamente, deberá proporcionar -CApath o -CAfile .

Por lo tanto, podemos usar un comando como:

  

openssl s_client -connect security.stackexchange.com:443 < / dev / null | sed -n '/ ^ ----- BEGIN CERTIFICATE ----- /, / ^ ----- END CERTIFICATE ----- / p; / Verificar el código de retorno: / p' > certificate.txt

Que luego podemos inspeccionar:

  

openssl x509 -in certificate.txt -noout -text

En este caso, los bits interesantes son:

  

Asunto: C = EE. UU., ST = NY, L = Nueva York, O = Stack Exchange, Inc., CN = *. stackexchange.com

     

Nombre alternativo del sujeto X509v3:                  DNS: .stackexchange.com, DNS: stackexchange.com, DNS: stackoverflow.com, DNS: .stackoverflow.com, DNS: stackauth.com, DNS: sstatic.net, DNS: .sstatic.net, DNS: serverfault.com, DNS: .serverfault.com, DNS: superuser.com, DNS: .superuser.com, DNS: stackapps.com, DNS: openid.stackauth. com, DNS: .meta.stackexchange.com, DNS: meta.stackexchange.com, DNS: mathoverflow.net, DNS: .mathoverflow.net, DNS: askubuntu.com, DNS: .askubuntu.com, DNS: stacksnippets.net

Para las entradas de comodín, sabemos que es válido para cualquier subdominio de, por ejemplo, .stackexchange.com pero no los dominios reales utilizados por la empresa.

Si desea almacenar los certificados intermedios, en lugar de solo el certificado del servidor, puede agregar -showcerts .

    
respondido por el Ángel 18.08.2016 - 20:37
fuente

Lea otras preguntas en las etiquetas