0

認証のためにクライアント証明書を必要とする Web アプリケーションを作成しています。その後、ユーザーは自分の秘密鍵でテキストに署名し、サーバーに送信する必要があります。データを受信したら、「他の人」の証明書ストアのサーバーに既に保存されているユーザーのオープンキーを使用して復号化する必要があります。また、このユーザーの証明書が「信頼されていないストア」にあるかどうかを確認する必要があります。これが私のc#コードです。

X509Store store = new X509Store(StoreName.My);
store.Open(OpenFlags.ReadOnly);
int Count = store.Certificates.Count;
foreach (X509Certificate2 mCert in store.Certificates)
{
    ClientName2 = mCert.Subject;
}

        store.Close();

しかし、実行した後、個人ストアに証明書が見つかりません。しかし、certmgr.msc に tham が表示されます。同様の状況が他のストアにも見られます。アクセスできる証明書とアクセスできない証明書があります。ApplicationPoolIdentity に対する Windows 2008 r2 サーバーのアクセス許可では、パブリック ユーザーの証明書を取得できないと思います。しかし、私は間違っている可能性があります... iis からのストレージ アクセスの許可を確認する方法を教えてください。それとも、他のアプローチを使用する必要がありますか?

2013 年 2 月 24 日 (編集): はい、この問題は IIS のアクセス許可が原因のようです。同じコードでコンソール アプリケーションを実行すると、すべてが機能します。Windows 2008 r2 で証明書ストアの読み取り許可を設定する方法を誰もが知っていますか?

4

1 に答える 1

1

これが、この質問を投稿した数日後に見つけた私の解決策です。私のコードにはいくつかの問題がありましたが、この質問については、証明書が追加された場所に注意する必要があります。

certmgr.msc と IE に証明書を追加しました。そして、それらはユーザー証明書ストアに自動的に追加されましたが、IIS はコンピューターの証明書ストアで証明書を探します! そのため、現在のユーザー アプリケーションからコンソール アプリケーションを実行すると、ユーザー証明書が表示されます。そして、IIS は別の場所に目を向けます。証明書を IIS で表示したい場合は、mmc コンソールを介して証明書をローカル コンピューター ストレージに追加します。

于 2013-02-27T10:37:36.130 に答える