可以用二级域名私钥签署三级证书请求吗?

Can I sign a certificate request for third-level with a private key of second-level domain?

假设我拥有 example.com 的常规(非通配符)SSL 证书。

我想成为 example.com 所有子域的证书颁发机构。例如。我想为 wiki.example.com 发出证书请求并使用 example.com 的私钥对其进行签名,该私钥由 Comodo/Thawte/whatever.

签名

浏览器会考虑证书链 wiki。example.com -> example.com -> Thawte 是有效的吗?

。那么,您可以使用 example.com 证书的私钥为 wiki 签署证书。example.com 并将 example.com 证书设置为 wiki 的 'issuer'。example.com , 但所有浏览器都会拒绝这样的证书链。

原因是每个证书都有“Key Usage”字段。您的“example.com”证书将允许以下用途:

X509v3 Extended Key Usage: 
        TLS Web Server Authentication, TLS Web Client Authentication

所有合理的 SSL 验证器必须拒绝此证书作为 CA 证书,因为 CA 证书必须是

X509v3 Key Usage: critical
            Certificate Sign, CRL Sign

更新

如@dave_thompson_085 所述,证书必须具有包含“CA”布尔标志的“基本约束”字段。位标志“KeyUsage.keyCertSign”(Openssl 输出中的“X509v3 Key Usage: Certificate Sign”)和“BasicConstraints.CA”(Openssl 输出中的“X509v3 Basic Constraints: CA”)一起断言(参见 RFC 5280, section 4.2.1.3).

仅当两个位都设置时,example.com 的私钥才可用于中间 CA。