我正在尝试生成自签名 SSL 证书来保护和example.com
。*.example.com
查看这和这问题,似乎有同样多的人同意和不同意是否可以这样做。然而,网站来自认证机构的证明似乎表明这是可以做到的。
目前,这些是添加到我的 openssl 配置文件中的更改:
[req]
req_extensions = v3_req
[req_distinguished_name]
commonName = example.com
[v3_req]
subjectAltName = @alt_names
[alt_names]
DNS.1 = example.com
DNS.2 = *.example.com
我尝试了上述配置并生成了证书。导航到 时https://example.com
,它会发出通常的警告,指出证书是“自签名的”。接受后,我导航到https://abc.example.com
,又出现了一个警告,说该证书仅对 有效example.com
。
证书详细信息仅example.com
在证书层次结构中列出,没有任何通配符子域存在的迹象。
我不确定这是由于配置错误还是通用名称应该有通配符,或者无法做到这一点。
进一步更新:
这是我使用 openssl 查看证书请求得到的结果:
# openssl req -text -noout -in eg.csr
Certificate Request:
Data:
Version: 0 (0x0)
Subject: C=xx, L=Location, O=Example Pte Ltd, CN=example.com/[email protected]
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:c1:c7:0d:7e:b7:48:d3:b8:9a:5a:88:db:c2:91:
...
Exponent: 65537 (0x10001)
Attributes:
Requested Extensions:
X509v3 Basic Constraints:
CA:FALSE
X509v3 Key Usage:
Digital Signature, Non Repudiation, Key Encipherment
X509v3 Subject Alternative Name:
DNS:example.com, DNS:*.example.com
Signature Algorithm: sha1WithRSAEncryption
4d:4a:8a:d9:32:e2:31:c5:6c:8c:6a:2a:a6:c3:17:63:dd:a4:
...
这是我通过查看证书获得的信息:
# openssl x509 -in eg.crt -noout -text
Certificate:
Data:
Version: 1 (0x0)
Serial Number:
d0:9e:b3:d5:83:b5:a1:0d
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=xx, L=Location, O=Example Pte Ltd, CN=example.com/[email protected]
Validity
Not Before: Sep 30 10:16:34 2012 GMT
Not After : Sep 30 10:16:34 2013 GMT
Subject: C=xx, L=Location, O=Example Pte Ltd, CN=example.com/[email protected]
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (1024 bit)
Modulus:
00:c1:c7:0d:7e:b7:48:d3:b8:9a:5a:88:db:c2:91:
...
Exponent: 65537 (0x10001)
Signature Algorithm: sha1WithRSAEncryption
3d:98:0d:f1:1b:06:27:63:09:14:4d:41:37:49:eb:70:15:1c:
...
通过浏览器查看时,证书字段应该包含主题备用名称的扩展名。但那里没有。如果确实可以实现这一点,我想在生成证书时可能会出现一些问题。
答案1
是的,它工作得很好。在公共证书颁发机构颁发的通配符中,您通常会看到通配符作为证书的主题,而基本域作为主题备用名称,但我相信相反的安排也有效。
查看您生成的证书 - alt_names 是否正确合并到证书中?