0

我正在为一些基于 python 的程序开发 X509 存储系统。所有证书都保存在 PostgresSQL 数据库中以便于访问。一切正常,当每个主题(用户或 CA 机构)只有一个证书时。然后找到验证路径很容易,因为颁发者字段唯一标识下一个证书:

UserCert1(CA_cert_class1) -> CA_cert_class1(CA_cert_root) -> CA_cert_root(CA_cert_root)

当某些证书由于到期或任何其他原因而更新时,问题就开始了。然后两个或多个证书具有相同的主题。在这种情况下,可能的认证途径不止一种。

UserCert1(CA_cert_class1) -> CA_cert_class1(CA_cert_root)(old)->....
                          -> CA_cert_class1(CA_cert_root)(new)->....

尝试每种组合都不是解决方案。删除过期证书也不是解决方案,因为我需要它们来验证旧的数字签名。

问题:如何在 X509 证书中唯一标识颁发者证书。我想,这与 X509v3 扩展有关。我不确定如何使用它们。

4

2 回答 2

2

为此有一个 X509v3 扩展。它是 AKI(授权密钥标识符)。子证书中的此编号应与父证书中的 SKI(主题密钥标识符)匹配。

有关详细信息,请参阅RFC5280。SKI 可以通过公钥的散列或任何生成唯一编号的方式派生。

于 2013-05-13T18:04:58.387 回答
1

证书颁发者和序列号唯一标识 X.509 证书(适用于所有合格证书)。即使证书更新,其序列号也应该不同。

不保证证书中存在 X509v3 扩展,例如主题唯一标识符。

请尝试发行者和序列号的组合。

于 2013-05-13T06:14:40.623 回答