Pode ser descoberto que sites / domínios um certificado SSL (pem) aprova?

3

Um certificado SSL (não curinga) pode ser emitido para corresponder a vários domínios e subdomínios, como mysub1.example1.com , www.example2.com e muitos outros, tudo em um certificado com a mesma chave privada.

É possível obter a lista de domínios para os quais um certificado é válido? Como? Isso é possível em um navegador ou devo usar a CLI do OpenSSL?

Por favor, peça mais informações se você precisar. Honestamente, não sei como colocar a questão em palavras claras e estou disposto a melhorá-la.

    
por The Quantum Physicist 28.05.2016 / 18:10

1 resposta

3

Os nomes de domínio válidos para um certificado são estipulados em dois lugares.

Primeiro, o Nome Comum (CN), que faz parte do campo Assunto. Há apenas espaço para um nome aqui, o que significa que pode ser um nome fixo, como www.example.com ou um caractere curinga, como *.example.com .

O segundo é a extensão de Nome Alternativo de Assunto (SAN), que lista nomes adicionais para os quais o certificado é válido. Existem muitas opções para o campo SAN, mas o que você terá interesse é o DNS.

Se você observar a GUI do certificado da maioria dos navegadores, deverá ver os campos Assunto e SAN.

Para visualizá-los usando o OpenSSL, basta executar:

$ openssl x509 -noout -text -nameopt multiline -in <cert file>

Observe que -nameopt multiline é opcional, mas facilita a leitura. O exemplo a seguir é de ssl.com, pois contém um bom exemplo da SAN:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            23:dd:f6:40:e2:ad:3f:24:2f:31:9c:c6:48:db:64:92
    Signature Algorithm: sha256WithRSAEncryption
        Issuer:
            countryName               = US
            organizationName          = SSL.com
            organizationalUnitName    = Controlled by COMODO exclusively for SSL.com
            organizationalUnitName    = www.ssl.com
            commonName                = SSL.com Premium EV CA
        Validity
            Not Before: Mar 11 00:00:00 2016 GMT
            Not After : Nov 18 23:59:59 2016 GMT
        Subject:
            serialNumber              = NV20081614243
            jurisdictionCountryName   = US
            jurisdictionStateOrProvinceName = Texas
            jurisdictionLocalityName  = Houston
            businessCategory          = Private Organization
            countryName               = US
            postalCode                = 77025
            stateOrProvinceName       = Texas
            localityName              = Houston
            streetAddress             = Suite 286C
            streetAddress             = 2617 W Holcombe Blvd
            organizationName          = SSL Corp
            organizationalUnitName    = Security
            organizationalUnitName    = COMODO EV Multi-Domain SSL
            commonName                = www.ssl.com
        Subject Public Key Info:
...
            X509v3 Subject Alternative Name: 
                DNS:www.ssl.com, DNS:answers.ssl.com, DNS:faq.ssl.com, DNS:info.ssl.com, DNS:links.ssl.com, DNS:reseller.ssl.com, DNS:secure.ssl.com, DNS:ssl.com, DNS:support.ssl.com, DNS:sws.ssl.com, DNS:tools.ssl.com
...

Apenas o campo commonName Subject é usado como o nome do domínio; todas as outras entradas em Subject , como organizationalUnitName , são irrelevantes, mesmo que pareçam nomes de domínio.

Para recuperar todos os certs e salvá-los, tente:

$ openssl s_client -showcerts -connect www.ssl.com:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | csplit - -z -f cert- '/-END CERTIFICATE-/1' '{*}'
    
por 29.05.2016 / 17:53