シナリオ:
- クライアントが LAN 上の WebService A を呼び出します。WebService A は、ID "Network Service" を持つアプリケーション プールで実行されています。
- WebService A はいくつかの作業を行い、WebService B を呼び出す準備をします。
- WebService B には、クライアント証明書 (*.cer) と SSL が必要です。
- WebService A は、専用の Windows 2003 サーバー上にあります。
- 開発環境ではすべてが正常に機能します (ただし、管理者権限を持つ開発者は常にローカルでログオンしています (驚くことではありません!))。
- 証明書は次のディスクに保存されます。
C:\MyCertificates\
- 証明書は、次のスニペットを使用して、Dev で実行時に正常に適用されています。
myWebService.ClientCertificates.Add(new X509Certificate.CreateFromCertFile(certPath));
問題: WebService A が WebService B を呼び出しており、返された例外は次のとおりです。
リクエストは HTTP ステータス 403: Forbidden で失敗しました
これは、WebService B への要求で証明書が送信されなかったことを意味します。
この証明書をブラウザにインストールすることは解決策ではないと想定しています。通常、ブラウザーの設定はユーザーごとに行われ、Web サービスを実行している資格情報を持つユーザーに証明書を渡す必要があります。(たとえば、ネットワーク サービス、システム、または IIS AppPool 設定にあるもの)。
質問:指定したディレクトリの場所にある自分の証明書へのアクセスまたは関連付けを、ネットワーク サービスまたはその他の非ユーザー アカウントに許可するにはどうすればよいですか?