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 に答える