Установите сертификат клиента для учетной записи пула приложений IIS

StackOverflow https://stackoverflow.com/questions/1034415

Вопрос

Сценарий:

  • Клиент вызывает веб-сервис A по локальной сети.Веб-сервис A работает под управлением пула приложений с идентификатором "Сетевая служба".
  • Веб-сервис A выполняет некоторую работу, готовится вызвать веб-сервис B.
  • Веб-сервису B требуется сертификат клиента (*.cer) и SSL.
  • Веб-сервис A находится на выделенном сервере Windows 2003.
  • В среде разработки все работает так, как должно (но разработчик с правами администратора всегда входит в систему локально (неудивительно!).
  • Сертификаты хранятся на диске по адресу C:\MyCertificates\
  • Сертификат успешно применяется во время выполнения в Dev с помощью этого фрагмента: myWebService.ClientCertificates.Add(new X509Certificate.CreateFromCertFile(certPath));

Проблема: Веб-сервис A вызывает веб-сервис B, и возвращаемое исключение является:

Запрос выполнен с ошибкой со статусом HTTP 403:Запрещено

Это действительно означает, что сертификат не был отправлен в запросе на WebService B.

Я исхожу из предположения, что установка этого сертификата в браузер не является решением.Настройки браузера обычно зависят от пользователя, и мне нужно предоставить сертификат пользователю, под учетными данными которого запущена веб-служба.(например,Сетевая служба, система или что-то еще, что указано в настройках IIS AppPool).

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top