Обратный прокси-сервер IIS ARR с аутентификацией клиентского сертификата для бэкэнда IIS

Обратный прокси-сервер IIS ARR с аутентификацией клиентского сертификата для бэкэнда IIS

У нас есть устаревшие SOAP Web Services ( https://dev-ms01/Services/default.asmx), которые написаны на asp.net 1.1, размещенные на IIS7 (стандарт win server 2008), веб-сервисы, потребляемые клиентами путем предоставления Client Certificate. Для настроек, которые SSL Certificatesу нас есть Acceptна этом IIS

`Client(Request with SSL Client Certificate)--> IIS7 (on host dev-ms01)--> Asp.Net SOAP WebServices`

Сейчас я пытаюсь настроить прокси IIS (IIS10 на хосте win server 2016 64bit secure-dev-ms01) с revere proxy для IIS7. Я следовал статье msdnhttps://blogs.msdn.microsoft.com/friis/2016/08/25/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world-apps/чтобы настроить перезапись URL с помощью ReverseProxy, как показано ниже

`Client(Request with SSL Client Certificate)--> Proxy IIS10 Server with ReverseProxy (on host secure-dev-ms01)--> IIS7 (on host dev-ms01) --> Asp.Net SOAP WebServices`

На IIS10(хосте secure-dev-ms01) для SSL Certificatesвыбранных мной настроек Acceptя попробовал следующую конфигурацию обратного проксивведите описание изображения здесь. Когда я пытаюсь просмотреть URL-адрес прокси-веб-сервисов, так как https://secure-dev-ms01/Services/default.asmxон запрашивает клиентский сертификат, но после предоставления клиентского сертификата я вижу следующую ошибку

403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.

RevereProxyЯ также пробовал использовать нижевведите описание изображения здесьи попытался просмотреть URL-адрес прокси-веб-сервисов https://secure-dev-ms01/Services/default.asmxи предоставил клиентский сертификат, но все еще вижу следующую ошибку. Я также попытался снять флажок Enable SSL Offloadingдля обеих вышеуказанных конфигураций ReverseProxy, но это тоже не сработало

403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.

Я нашел эту статью на msdnhttps://blogs.msdn.microsoft.com/asiatech/2014/01/27/configuring-arr-with-client-certificate/что предполагает изменение SSL Certificatesнастроек Ignoreна внутреннем сервере (но мы не можем принять это для нашей организации) и попробовать использовать сертификат из заголовков, X-ARR-ClientCertно мы пытаемся избежать внесения каких-либо изменений в код устаревших служб asp.net 1.1

Я не смог найти ни одной соответствующей статьи, которая могла бы заставить IIS ARR ReverseProxy с аутентификацией по клиентскому сертификату работать для бэкэнда IIS, просто изменив конфигурацию на IIS10 с ReverseProxy вместо изменения кода/конфигурации на бэкэнде IIS7. Может ли кто-нибудь помочь мне заставить это работать?

решение1

Я предполагаю, что у вас есть IIS7 (on host dev-ms01)машина в защищенной сети без прямого доступа из Интернета.

В этом случае вам необходимо включить SSL-разгрузку и аутентификацию клиентского сертификата наProxy IIS10 Server with ReverseProxy (on host secure-dev-ms01) толькои отключить SSL-разгрузку и аутентификацию сертификатов в IIS7.

В этой схеме IIS10 отвечает за SSL-рукопожатие и проверку сертификата. Он помещает сертификат (POM) в X-ARR-ClientCertзаголовок и проксирует запросы в IIS7 через обычный HTTP, включая этот заголовок. Вероятно, вам нужно настроить обход заголовков X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schemaи X-Forwarded-Hostна IIS10 в правиле перезаписи URL, если ваши службы ASP используют их.

Итак, для вашего сервера IIS10:

  • включить ARR
  • добавить правило перезаписи URL для прокси-передачи в IIS7
  • настроить обход заголовков выше в правиле перезаписи
  • добавить сертификат сервера
  • требовать SSL в настройках SSL веб-сайта по умолчанию
  • установите для клиентских сертификатов значение Принять
  • включите анонимную аутентификацию для вашего сайта
  • настройка https-привязок с сертификатом сервера

Для сервера IIS7:

  • отключить HTTPS-привязки
  • не требуют SSL
  • не требуют клиентских сертификатов

Надеюсь, вы заставите следующую схему работать.

Browser ---[HTTPS]---> IIS10 --[HTTP + headers]--> IIS7

где headersX-ARR-ClientCert, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schema и X-Forwarded-Host.

Связанный контент