Установите сертификат клиента для учетной записи пула приложений IIS
-
06-07-2019 - |
Вопрос
Сценарий:
- Клиент вызывает веб-сервис 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).
Вопрос: Как я могу предоставить сетевой службе или другой учетной записи, не являющейся пользователем, доступ или связь с моим сертификатом, находящимся в указанном каталоге?
Решение
Эта статья базы знаний Майкрософт может быть полезной:
Ваш веб-сервис "A" фактически будет являться ASP.NET приложением, вызывающим веб-сервис, как описано в статье.