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扩展有关。我不知道怎么用

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

参见RFC5280了解更多细节。SKI可以通过公钥的散列或任何生成唯一数字的方法派生。

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

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

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

相关内容

最新更新