認証のためにクライアント証明書を必要とする 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 で証明書ストアの読み取り許可を設定する方法を誰もが知っていますか?