假设我拥有example.com的常规(非通配符)SSL证书。
我想成为example.com的所有子域的证书颁发机构。例如。我想对wiki.example.com发出证书请求,并使用example.com的私钥对其进行签名,该私钥由Comodo / Thawte / whatever签署。
浏览器会考虑证书链wiki.example.com-> example.com->解冻有效的证书吗?
No。好吧,您可以使用example.com证书的私钥为wiki.example.com签名证书,并将example.com证书设置为wiki.example.com的“颁发者”,但是所有浏览器都会拒绝此类证书链。
原因是每个证书都有“密钥用法”字段。您的“ 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密钥用法:证书符号”)和“ BasicConstraints.CA”(在Openssl输出中为“ X509v3基本约束:CA”)一起声明(请参见RFC 5280, section 4.2.1.3)。
example.com的私钥仅在两个位都设置时才可用于中间CA。