
У нас есть устаревшие 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
где headers
X-ARR-ClientCert, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schema и X-Forwarded-Host.