2012-03-21 32 views
8

私はASP.NET 4.0 Webアプリケーションを開発しており、X509Storeから現在のユーザー証明書を読みたいと思います。 LocalMachine証明書を読むのはうまくいきますが、StoreLocationをCurrentUserに設定すると、空のコレクションが返されます。X509StoreからCurrentUser証明書を読み取ることができません

次のコードは正常に動作します:

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); // StoreLocation.CurrentUser 
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); 

私は(certmgr.mmc経由)私の個人的な店をチェックしていると私は私が証明書を持っていることを確信しています。

私には何が欠けていますか?

+0

アプリケーションは実行していますか? –

+0

アプリケーションは私のローカルIIS(7.5)でホストされています。アプリケーションプールはApplicationPoolIdentityに設定されます。 –

+1

... CurrentUserはあなたではなくアプリケーションプールになります。 –

答えて

2

使用しているアプリケーションプールIDに関係なく、Webアプリケーション経由で個人証明書ストアにアクセスすることはできないようです。

ウェブアプリケーションはその場所にアクセスできません。 :)

私のソリューション:

私はストアにアクセスするための唯一の方法だと思うのActiveXコントロールを開発しました。 (また、Javaアプレットも同じ機能を提供します)。 JavaScript経由でActiveXコントロールを使用してStoreにアクセスし、その情報をサーバーに送信します。

0

ワーカープロセスが証明書ストアにアクセスできない場合は、単にアカウント設定の問題です。 IIS設定に進み、ApplicationPoolsを開き、右クリックして[詳細設定]を選択し、LoadUserProfileをTRUEに設定してみてください。プールを再起動します。それは私のための労働者です - プライベートキーで.PFXをロードするときに例外はありません。

0

私は同様の問題がありました。 IIS管理 - > [あなたの仮想ディレクトリ] - >認証 - >匿名認証( "編集..."を選択)を選択し、 "アプリケーションプールID"を使用するように変更します。

それ以外の場合は、一般的な「IUSR」として実行されている可能性があります。

関連する問題