您关于何时/如何更新CA密钥的问题是一个很好的问题,但恐怕它没有一个通用的答案;这取决于哪些应用程序正在使用这些证书,以及它们期望CA在接近其生命周期时如何运行。
有一件事是普遍正确的,即终端实体证书在其发行链中不应超过任何CA,因为像这样的僵尸证书是不可撤销的,因此CA密钥有效期的“重叠”基本上意味着运行两个CA:
当CA证书到达到期的end_entity_lifetime内时,创建一个新的CA密钥和自签名证书。交叉认证新旧CA证书。让CA维护两组CRL / OSCP / CMP服务:用旧密钥处理旧证书,用新密钥处理新证书。Pros:End-实体和第三方应用程序知道,每个CA密钥只会颁发一个证书,并且在密钥退役之前它将有效。他们不必担心查询/更新CA证书(对于离线、证书钉扎或与缓存相关的应用程序来说非常方便)。来自旧CA密钥和新CA密钥的终端实体可以通过交叉认证链接证书相互信任。想要验证终端实体证书的应用程序仍然可以遵循证书中的CRL / OCSP信息,直到CA密钥到期为止,因为CA仍在用旧密钥发布CRL。对于知道链接证书的应用程序,执行CA密钥翻转更安全,因为您可以将信任从一个密钥扩展到另一个密钥,而不是需要冷信任新的CA密钥。Cons:管理更复杂,因为您实际上是活动CA数量的两倍。并不是所有的应用程序都知道链接证书,所以您必须管理兼容性。重新颁发相同密钥的根证书可以解决其中的一些问题,但不是所有问题。特别是,它破坏了基于证书哈希的证书钉扎,这意味着攻击者有一个更长的窗口来强行执行密钥。尽管如此,这显然是在实践中完成的,所以我一定是错过了什么.
摘要:我不确定这里是否有“正确的答案”。根据使用证书的应用程序,可能已经为您做出了决定。