3

我正在尝试遍历证书存储并确定证书是否具有特定的颁发者。我找到了这篇文章,它提供了调用证书颁发者的示例:

            Console.WriteLine("{0}Issuer: {1}{0}", Environment.NewLine, x509.Issuer);

但他们的示例似乎需要输入证书。是否可以遍历证书以识别机器上是否有任何具有特定颁发者的证书?就像是:

ForEach(cert in x509certificate2.store)
{
    if (cert.issuer == SpecificIssuer)
    {
        console.writeline(cert.ToString());
    }
}

如果可以将循环范围进一步过滤到这些特定的商店,我试图隔离的证书将属于特定的商店 (?),例如 [Console Root\Certificates (Local Computer)\Personal\Certificates]。

4

1 回答 1

7

您可以使用 Certificates.Find(),使用 StoreName 来指定您自己的商店。

X509Store Store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
Store.Open(OpenFlags.ReadOnly);
X509Certificate2Collection CertColl = Store.Certificates.Find(X509FindType.FindByIssuerName, "Microsoft",true);
foreach (X509Certificate2 Cert in CertColl)
    Console.WriteLine("Cert: " + Cert.IssuerName.Name);
于 2013-10-31T21:58:25.673 回答