我正在尝试遍历证书存储区并确定证书是否具有特定的颁发者。我找到了this文章,其中提供了调用证书颁发者的示例:
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(本地计算机)\ Personal \ Certificates],如果可以进一步将循环范围过滤到这些特定商店
答案 0 :(得分:4)
您可以使用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);