X509 证书 KVStore 的主键

Primary Key for X509 Certificate KVStore

我要将根证书和中间证书(来自不同的 CA)存储到一些 KVStore 中。

问题:我有一个叶证书(仅),我想根据我商店的证书对其进行验证。叶证书具有 Authority Key Identifier == Subject Key Identifier 的 parent 必须已经存在于 KVStore 中。

问题:我应该在 KVStore 中使用什么作为密钥?

1.Subject Key Identifier:certificate 或者它可以在单个 CA 或不同 CA 中相同。更新或密钥轮换怎么样?

2.Subject Key Identifier + Subject DN: certificate - 不确定与 first 有什么不同。

3.Subject Key Identifier:列表[certificate]

4.Serial Number + Issuer 是唯一的,但叶证书不包含关于 parent.

的日期

Subject Key Identifier 是经过认证的 public 密钥的哈希值。因此,根据 CA 的密钥轮换策略,这可能会或可能不会在证书更新期间更改。因此不能保证映射 SKI:certificate 是唯一的。

选项 2 中的组合索引不会改变这一点。

应该排除选项 4,因为子证书不知道其父证书的颁发者和序列号。

选项 3 在大多数情况下可能是一个有效的解决方案,但是,Authority Key Identifier 扩展对于 X.509 证书不是强制性的。因此,您可能不得不处理没有 AKI 扩展的叶证书。

这通常会导致选项 5:Subject DN: list[certificate]。最好使用排序列表,最有可能的 CA 证书位于顶部。

但是,如果您的应用程序只处理带有 AKI 扩展的叶证书,并且所有 CA 证书都需要在续订期间进行密钥轮换,则选项 1 的性能可能更高。在那种情况下,我还会保留一个条目 Subject DN: list[Subject Key Identifier].