У нас есть устаревшие веб-службы 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:
Для сервера IIS7:
Надеюсь, у вас заработает следующая схема
Browser ---[HTTPS]---> IIS10 --[HTTP + headers]--> IIS7
где headers
являются X-ARR-ClientCert, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schema и X-Forwarded-Host.