Действительные доменные имена для сертификата указаны в двух местах.
Во-первых, это общее имя (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' '{*}'