【问题标题】:Can I sign a certificate request for third-level with a private key of second-level domain?我可以用二级域的私钥签署三级证书请求吗?
【发布时间】:2020-01-22 16:44:11
【问题描述】:

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

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

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

【问题讨论】:

标签: ssl openssl certificate ssl-certificate


【解决方案1】:

。好吧,您可以使用 example.com 证书的私钥为 wiki.example.com 签署证书,并将 example.com 证书设置为 wiki.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。

【讨论】:

  • 还有 BasicConstraints.CA=false vs true
  • 感谢您的回答,注意到keyUsagebasicConstraints 字段的区别。
猜你喜欢
  • 2020-10-28
  • 1970-01-01
  • 2013-06-13
  • 2016-09-16
  • 2017-12-26
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 2017-05-03
相关资源
最近更新 更多