Установите сертификат клиента для учетной записи пула приложений IIS - PullRequest
8 голосов
/ 23 июня 2009

Сценарий:

  • Клиент вызывает 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.)

Вопрос: Как я могу предоставить доступ или сопоставление своему сертификату, живущему в указанном месте каталога, сетевой службе или другой учетной записи, не относящейся к пользователю?

1 Ответ

3 голосов
/ 23 июня 2009

Эта статья базы знаний Майкрософт может быть полезна:

Как вызвать веб-службу с помощью сертификата клиента для проверки подлинности в веб-приложении ASP.NET (MS KB901183)

Ваша веб-служба «А» фактически будет приложением ASP.NET, вызывающим веб-службу, как описано в статье.

...