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