我正在生成一个自签名证书,已将其添加到钥匙串中,并且可以看到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
答案 0 :(得分:0)
之所以无法正常工作,是因为浏览器将最正确的部分归为“顶级域”。
像*.com
这样的通配符证书无效,*.localhost
也是无效的。
当我放入另一个 label 时,整个过程正常工作。
*.domain.localhost
与www.domain.localhost
匹配且有效。
*.localhost
匹配www.localhost
,但无效。