可以颁发(非通配符)SSL 证书来匹配多个域和子域,例如mysub1.example1.com
、www.example2.com
等等,所有这些域和子域都包含在一个具有相同私钥的证书中。
是否可以获取证书有效的域列表?如何获取?是否可以通过浏览器获取,还是应该使用 OpenSSL CLI?
如果需要,请询问更多信息。老实说,我不知道如何用清晰的语言提出问题,我愿意改进它。
答案1
证书的有效域名在两处规定。
首先是 Common Name (CN),它是主题字段的一部分。这里只有一个名称的空间,这意味着它可以是固定名称,例如 ,www.example.com
也可以是通配符,例如*.example.com
。
第二个是主题备用名称 (SAN) 扩展,其中列出了证书有效的其他名称。SAN 字段有很多选项,但您感兴趣的是 DNS。
如果您查看大多数浏览器的证书 GUI,您应该会看到主题和 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' '{*}'