Назад | Перейти на главную страницу

IIS ARR ReverseProxy с аутентификацией сертификата клиента для серверной части IIS

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

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

Теперь я пытаюсь настроить прокси-сервер IIS (IIS10 на 64-битном хосте win server 2016 secure-dev-ms01) с прокси-сервером Revere для IIS7. Я следил за статьей msdn https://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 и я пробовал конфигурацию ReverseProxy ниже . Когда я пытаюсь просмотреть 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 для обеих вышеупомянутых конфигураций RevereseProxy, но это тоже не сработало

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

Я нашел эту статью msdn https://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, может ли кто-нибудь помочь мне сделать эту работу?

Я полагаю, у тебя есть 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

где headers являются X-ARR-ClientCert, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schema и X-Forwarded-Host.