Сценарий:
- Клиент вызывает WebService A в локальной сети. WebService A работает в пуле приложений с удостоверением «Сетевая служба».
- WebService A выполняет некоторую работу, готовится вызвать WebService B.
- WebService B требует сертификата клиента (* .cer) и SSL.
- WebService A находится на выделенном сервере Windows 2003.
- В среде Dev все работает как надо (но разработчик с привилегиями Администратора всегда входит в систему локально (неудивительно!).
- Сертификаты хранятся на диске в
C:\MyCertificates\
- Сертификат успешно применяется во время выполнения в Dev с помощью этого фрагмента:
myWebService.ClientCertificates.Add(new X509Certificate.CreateFromCertFile(certPath));
Проблема:
WebService A вызывает WebService B, и возвращаемое исключение:
Запрос не выполнен с состоянием HTTP
403: запрещено
Это действительно означает, что сертификат не был отправлен в запросе к WebService B.
Я предполагаю, что установка этого сертификата в браузер не является решением. Настройки браузера, как правило, являются индивидуальными для каждого пользователя, и мне нужно предоставить сертификат пользователю, под учетными данными которого работает веб-служба. (например, Сетевая служба, Система или что-то еще в настройках IIS AppPool.)
Вопрос: Как я могу предоставить доступ или сопоставление своему сертификату, живущему в указанном месте каталога, сетевой службе или другой учетной записи, не относящейся к пользователю?