X509证书 - 维护认证路径

时间:2013-05-13 04:54:02

标签: python openssl x509

我正在为一些基于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扩展有关。我不确定如何使用它们。

2 个答案:

答案 0 :(得分:2)

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

有关详细信息,请参阅RFC5280。 SKI可以通过公钥的哈希值或任何生成唯一编号的任何内容派生。

答案 1 :(得分:1)

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

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

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