是否可以找出 SSL (pem) 证书批准的网站/域?

The*_*ist 3 certificate ssl openssl

A(非通配符)SSL证书可以颁发给匹配多个域和子域,比如mysub1.example1.comwww.example2.com和许多人一样,都在一个证书具有相同的私钥。

是否可以获得证书有效的域列表?如何?这可以从浏览器中实现,还是应该使用 OpenSSL CLI?

如果您需要,请询问更多信息。老实说,我不知道如何用清楚的语言表达这个问题,我愿意改进它。

gar*_*Red 5

证书的有效域名在两处规定。

首先是通用名称 (CN),它是主题字段的一部分。这里只有一个名称的空间,这意味着它可以是一个固定名称,例如www.example.com或通配符,例如*.example.com

第二个是主题备用名称 (SAN) 扩展,它列出了证书对其有效的其他名称。SAN 领域有很多选项,但您会感兴趣的是 DNS。

如果您查看大多数浏览器的证书 GUI,您应该会同时看到主题和 SAN 字段。

要使用 OpenSSL 查看它们,只需运行:

$ openssl x509 -noout -text -nameopt multiline -in <cert file>
Run Code Online (Sandbox Code Playgroud)

请注意,-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
...
Run Code Online (Sandbox Code Playgroud)

只有该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' '{*}'
Run Code Online (Sandbox Code Playgroud)