3

Сертификат SSL (без подстановочных знаков) может быть выдан для соответствия нескольким доменам и поддоменам, таким как mysub1.example1.com , www.example2.com и многие другие, все в одном сертификате с тем же закрытым ключом.

Можно ли получить список доменов, для которых действителен сертификат? Как? Это возможно из браузера, или я должен использовать OpenSSL CLI?

Пожалуйста, попросите дополнительную информацию, если вам это нужно. Честно говоря, я не знаю, как сформулировать вопрос ясными словами, и я хочу улучшить его.

1 ответ1

3

Действительные доменные имена для сертификата указаны в двух местах.

Во-первых, это общее имя (CN), которое является частью поля Subject. Здесь есть только место для одного имени, что означает, что оно может быть фиксированным, например www.example.com или подстановочным знаком, например *.example.com .

Вторым является расширение Subject Alternate Name (SAN), в котором перечислены дополнительные имена, для которых действителен сертификат. Существует много вариантов для поля SAN, но один из них вас интересует - DNS.

Если вы посмотрите на сертификат GUI большинства браузеров, вы должны увидеть поля Subject и SAN.

Чтобы просмотреть их с помощью OpenSSL, просто запустите:

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

Обратите внимание, что -nameopt multiline необязателен, но облегчает чтение. Следующий пример взят из ssl.com, так как содержит хороший пример 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
...

В качестве имени домена используется только поле commonName Subject все остальные элементы внутри Subject такие как organizationalUnitName не имеют никакого отношения, даже если они похожи на доменные имена.

Чтобы получить все сертификаты и сохранить их, попробуйте:

$ 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' '{*}'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .