是否可以更改 CA 中的“颁发者”值,以便在颁发新证书时出现新的“颁发者”值?
在有多个 SubCa 的情况下,是否有可能在所有 SubCa 的证书中匹配相同的“颁发者”,或者是否会产生冲突?
答案1
在证书路径验证方面,CA 由其主体名称和公钥的唯一组合来标识。如果您更改其中任何一个,则它将是不同的证书。
从管理角度来看,CA 可能拥有多个签名密钥(因此也拥有多个公钥),但就证书路径验证而言,它们被视为完全不同且不相关。例如,Acme Sub CA 可能拥有一个 RSA 和一个 ECDSA 签名密钥。由 Acme Sub CA 的 RSA 密钥签名的证书无法通过 Acme Sub CA 的 ECDSA 密钥验证,反之亦然。即使有两个 RSA 密钥,由其中一个 RSA 密钥签名的证书也无法通过另一个 RSA 密钥验证。
是否可以更改 CA 中的“颁发者”值,以便在生成新证书时出现新的“颁发者”值?
如果您更改颁发者字段,您实际上只是在创建一个新的 CA。
在有多个 SubCa 的情况下,是否有可能在所有 SubCa 的证书中匹配相同的“颁发者”,或者是否会产生冲突?
我将假设所有 SubCa 证书中的“发行者”您指的是 CA 颁发的所有订户证书。SubCA 本身的颁发者很可能是根 CA,并且它通常会签署多个 SubCA,因此所有 SubCA 的颁发者都是“Acme Root CA”。
CA 可能在负载均衡器后面运行多个软件实例。第一个订户可以访问第一个实例进行签名,第二个订户可以访问第二个实例进行签名,依此类推。在这种情况下,CA 证书的主体(以及订户证书的颁发者)是相同的,并且 CA 软件将使用相同的密钥对这些证书进行签名。从证书路径验证的角度来看,这没有区别。
如果您所说的“多个”是指您有不同的软件实例,每个实例都有自己的签名密钥,但具有相同的主题(因此订户证书中具有相同的发行者),那么从路径验证的角度来看,这些实际上只是不同的 CA。
最后,请注意,您只能通过让父 CA(很可能是根 CA)为其签署新的 CA 证书来更改 SubCA 的颁发者字段。如果您编写了自己的软件,该软件使用 Acme Sub CA 证书和签名密钥,但输出的订户证书具有不同的颁发者字段,那么它将无法通过路径验证,因为依赖方永远不会匹配公钥和主题(请参阅我对此答案的第一句话)。
所有血腥细节都在RFC 5280 第 6 部分
答案2
不,你不能改变它。Issuer
字段由 CA 自动生成,并与 CA 名称匹配。