首页 > 解决方案 > 如何在c#中访问具有相同通用名称的2个证书中的最新证书

问题描述

如何从 c# 中的 windows 证书存储中访问具有相同通用名称的 2 个证书中的最新证书或稍后将过期的证书。我正在使用 X509Store.Certificates.Find 获取证书,但它返回给我一个证书列表,它们具有相同的 CN 名称,但我想要最新的。

PS:我不想通过指纹访问它,因为每次证书到期时我都必须更改它

标签: c#x509certificatex509certficiate2

解决方案


以下函数将接受一组证书并返回最后一个过期的证书。它通过根据到期日期按降序创建证书的有序列表来实现这一点。

该函数不对每个证书的有效性状态做任何假设。

public Certificate getLongestLastingCertificate(Certificate[] certs)
{
    Certificate longetsLastingCert = null;
    if (certs != null)
    {
        if (certs.Count > 0)
        {
            longetsLastingCert  = certs.OrderByDescending(o => o.GetExpirationDate()).First();
        }
    }
    return longetsLastingCert;
}

推荐阅读