私の Windows Server 2008 サーバーは、偽装を使用する ASP.net アプリケーションをホストしています。偽装されているユーザーがサーバーにログオンしている限り、アプリケーションは動作します。ただし、ユーザーがログオフすると、クライアントは Web ページを表示できなくなります。代わりに、不可解なエラーが表示されます。
偽装ユーザーがログオンしたままにせずにサーバーを動作するように構成するにはどうすればよいですか? よろしくお願いします。
答え1
問題と解決策を見つけました。
問題:
Web サービスは、X509Certificate2 証明書を使用します。X509Certificate2 クラスのコンストラクターは、アプリケーションが実行されるユーザー アカウントのユーザー プロファイルに証明書をインポートしようとします。多くの場合、ASP.NET および COM+ アプリケーションはクライアントを偽装します。偽装する場合、パフォーマンス上の理由から、偽装したユーザーのユーザー プロファイルはロードされません。そのため、偽装したユーザーの "User" 証明書ストアにアクセスできません。
プロファイルはユーザーがログオンしたとき、またはサービスが開始されたときに読み込まれるため、対話型アプリケーションまたはユーザー アカウントで実行されている Windows サービスから実行した場合も同じコードが機能します。
解決:
ASP.NET/COM+ アプリケーションが実行されるマシンの管理者は、"ローカル コンピューター" ストアと呼ばれるマシン証明書ストアに証明書をインストールする必要があります。これは、ASP.NET/COM+ アプリケーションのインストール時に実行する必要があります。
管理者は、証明書に関連付けられた秘密キーのアクセス許可を設定して、ASP.NET プロセスと偽装ユーザーにキーへのアクセスを許可する必要があります。これは、証明書または秘密キーを「ローカル コンピューター」ストアにインストールしたユーザー アカウントのみが、後で証明書に関連付けられた RSA 秘密キーを使用できるため必要です。Windows リソース キット ツール (http://msdn2.microsoft.com/en-us/library/aa384088.aspx(http://msdn2.microsoft.com/en-us/library/aa384088.aspx) ) をクリックして権限を設定します。
ASP.NET/COM+ アプリケーション コードでは、PFX ファイルから証明書をインストールしようとするのではなく、インストールされた証明書を使用する必要があります。コードで X509Store クラスを使用してインストールされた証明書を検索します。
見るhttp://support.microsoft.com/kb/948154詳細については。