浏览器仅遵守证书中的第一个域

时间:2018-12-21 09:13:37

标签: google-chrome openssl ssl-certificate

我正在生成一个自签名证书,已将其添加到钥匙串中,并且可以看到Firefox和Chrome使用了该证书。 但是当我访问https://world.localhost时,鲍泽说该证书无效,因为它是为localhost颁发的。以下所有域都集成到证书中。更改顺序时,可以看到与请求的域相比,浏览器仅遵循最上面的条目(DNS.1),但是当我通过浏览器查看证书时,所有域都在证书中。

在这种情况下怎么了?

[ req ]
default_bits        = 2048
default_keyfile     = dev.cert.key
distinguished_name  = subject
#req_extensions      = req_ext
req_extensions      = v3_req
x509_extensions     = x509_ext
string_mask         = utf8only

[ x509_ext ]

subjectKeyIdentifier    = hash
authorityKeyIdentifier  = keyid,issuer

basicConstraints  = CA:FALSE
keyUsage          = digitalSignature, keyEncipherment
subjectAltName    = @alternate_names
[ v3_req ]

subjectKeyIdentifier = hash

basicConstraints    = CA:FALSE
keyUsage            = digitalSignature, keyEncipherment
subjectAltName      = @alternate_names

[ alternate_names ]

DNS.1       = localhost
DNS.2       = *.localhost
DNS.3       = *.test.localhost
DNS.4       = *.www.localhost
DNS.5       = *.api.localhost

1 个答案:

答案 0 :(得分:0)

之所以无法正常工作,是因为浏览器将最正确的部分归为“顶级域”。

*.com这样的通配符证书无效,*.localhost也是无效的。

当我放入另一个 label 时,整个过程正常工作。

*.domain.localhostwww.domain.localhost匹配且有效

*.localhost匹配www.localhost,但无效