1

マシン上のすべての証明書をループする単純なコンソール アプリを作成しました

private static X509Certificate2 GetSpecifiedCertificate(StoreName storeName, StoreLocation storeLocation)
{
    X509Store store = new X509Store(storeName, storeLocation);
    store.Open(OpenFlags.ReadOnly);

    X509Certificate2Collection certs = store.Certificates;


    if (certs.Count > 0)
    {
        Console.WriteLine(string.Format("found {0} certficates", certs.Count));

        for (int i = 0; i < certs.Count; i++)
        {
            X509Certificate2 cert = certs[i];
            Console.WriteLine(cert.Thumbprint);
        }
    }
    else
        Console.WriteLine("found no certficates at all");

    return null;
}

Windows Server 2008R2 で変数として とを使用するStoreName.CertificateAuthorityStoreLocation.LocalMachine、さらに多くの証明書がインストールされているにもかかわらず、3 つの証明書しか取得できません。

コンソール アプリの出力: ここに画像の説明を入力

CertificateAuthorityストア の場所にインストールされた証明書ここに画像の説明を入力

行方不明者はどうやって手に入れるの?

ファイルに署名するためにApple証明書を取得したいのですが、公開証明書をどのようにインストールしても、ストアループから取得できません...

常にマシンを再起動する必要がありますか? それらを取得するための特別なトリックはありますか?

4

2 に答える 2

1

証明書ウィンドウをどのように開きましたか? コンピューター アカウントではなく、自分のアカウントの証明書を見ていると思います。ただし、コードはコンピューター アカウントから証明書を照会します。通常、コンピューター アカウントには、自分のアカウントよりも少ない証明書がインストールされています。

コンピュータ アカウントの証明書ウィンドウを開くには、

  1. コマンドプロンプトで mmc を実行します。
  2. ファイル | スナップインを追加/削除します。
  3. 証明書を追加します。
  4. [コンピューター アカウント] を選択します。
于 2012-10-05T13:19:37.257 に答える
0

一般に、「CertificateAuthority」ストアをロードしてそこからフェッチすることで機能するはずなので、ちょっと奇妙です。

ただし、MSDNによると:http://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.storename.aspx

次のようにApple証明書をロードできるはずです。

var appleCert = new  X509Certificate2("appleRoot.cer");

始めるためだけに。

于 2012-10-05T13:01:26.407 に答える