Вопрос или проблема
У нас есть устаревшие SOAP веб-сервисы (https://dev-ms01/Services/default.asmx
), которые написаны на asp.net 1.1 и размещены на IIS7 (Windows Server 2008 Standard), веб-сервисы используются клиентами с предоставлением клиентского сертификата. Для настроек SSL Certificates
у нас установлено Accept
на этом IIS
`Client(Request with SSL Client Certificate)--> IIS7 (на хосте dev-ms01)--> Asp.Net SOAP WebServices`
Теперь я пытаюсь настроить прокси IIS (IIS10 на Windows Server 2016 64 бит с хостом secure-dev-ms01
) с обратным прокси для 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-переписывание с обратным прокси, как указано ниже
`Client(Request with SSL Client Certificate)--> Прокси IIS10 сервер с обратным прокси (на хосте secure-dev-ms01)--> IIS7 (на хосте dev-ms01) --> Asp.Net SOAP WebServices`
На IIS10
(хост secure-dev-ms01
) для настроек SSL Certificates
я выбрал Accept
и попробовал следующую конфигурацию обратного прокси . Когда я пытаюсь открыть URL веб-сервисов прокси как https://secure-dev-ms01/Services/default.asmx
, меня просят предоставить клиентский сертификат, но после его предоставления я вижу следующую ошибку
403 - Запрещено: Доступ запрещен.
У вас нет разрешения на просмотр этого каталога или страницы с предоставленными вами учетными данными.
Я также пробовал использовать ниже RevereProxy
и пытался открыть URL веб-сервисов прокси https://secure-dev-ms01/Services/default.asmx
, предоставив клиентский сертификат, но все равно вижу ту же ошибку. Я также пробовал снять отметку с опции Enable SSL Offloading
для обеих вышеупомянутых конфигураций обратного прокси, но это тоже не сработало
403 - Запрещено: Доступ запрещен.
У вас нет разрешения на просмотр этого каталога или страницы с предоставленными вами учетными данными.
Я нашел эту статью 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 с аутентификацией клиентского сертификата для заднего плана IIS с помощью всего лишь корректировок конфигурации на IIS10 с обратным прокси вместо изменения кода/конфигурации на заднем плане IIS7, кто-нибудь может помочь мне сделать это работающим?
Я предполагаю, что у вас есть машина IIS7 (на хосте dev-ms01)
в защищенной сети без прямого доступа из Интернета.
В этом случае вам нужно включить SSL offloading и аутентификацию клиентского сертификата только на Proxy IIS10 Server with ReverseProxy (на хосте secure-dev-ms01)
и отключить SSL offloading и аутентификацию сертификата в 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 для Default Web Site
- установите настройки клиентских сертификатов равными Accept
- включите анонимную аутентификацию для вашего сайта
- настройте HTTPS привязки с сертификатом сервера
Для сервера IIS7:
- отключите HTTPS привязки
- не требуйте SSL
- не требуйте клиентских сертификатов
Надеюсь, вам удастся настроить следующую схему
Браузер ---[HTTPS]--> IIS10 --[HTTP + заголовки]--> IIS7
где заголовки
– это X-ARR-ClientCert, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schema и X-Forwarded-Host.
IIS ARR (Application Request Routing) обратный прокси с аутентификацией клиентского сертификата обеспечивает безопасную связь между клиентами и серверами IIS на заднем плане. В этой конфигурации IIS ARR выступает в качестве обратного прокси, перенаправляя запросы к серверам заднего плана, одновременно обрабатывая завершение SSL и проверку клиентских сертификатов. Клиентский сертификат аутентифицируется на уровне ARR перед тем, как запрос будет перенаправлен на сервер IIS на заднем плане, что обеспечивает безопасную аутентификацию на основе сертификата без нагружения серверов заднего плана. Эта конфигурация повышает безопасность и масштабируемость, централизуя управление сертификатами и балансировку нагрузки.
Ответ или решение
Настройка обратного прокси на IIS ARR с аутентификацией по клиентскому сертификату для бэкенд-сервера IIS
Ваша задача состоит в том, чтобы настроить IIS ARR (Application Request Routing) в качестве обратного прокси-сервера для управления аутентификацией на основе клиентских сертификатов, направляемых на бэкенд-сервер IIS. На данный момент у вас есть два сервера: старый сервер IIS7, где размещается SOAP веб-служба, и новый сервер IIS10, который будет выполнять функции прокси-сервера. Вы хотите осуществлять клиентскую аутентификацию с сертификатом, не внося изменения в код веб-служб, работающих на IIS7.
Архитектура решения
Ваше решение будет включать следующую архитектуру запросов:
Browser ---[HTTPS]---> IIS10 (ARR) --[HTTP + headers]--> IIS7 --[SOAP Services]-->
Подготовка IIS10 (Прокси-сервер)
-
Включите ARR:
- Убедитесь, что вы установили и настроили ARR на вашем сервере IIS10. Это можно сделать через "Управление IIS" -> "Расширения" -> "Application Request Routing".
-
Создание правила переписывания URL для проксирования:
- Вам нужно создать правило перенаправления в разделе "Переписывание URL".
- В этом правиле убедитесь, что вы передаете необходимые заголовки, такие как:
X-ARR-ClientCert
X-Forwarded-For
X-Forwarded-Proto
X-Forwarded-Schema
X-Forwarded-Host
-
Настройка SSL:
- Настройте HTTPS-привязки с использованием сертификата сервера.
- В настройках SSL на сайте установите флажок "Требовать SSL".
- Установите параметры для клиентских сертификатов на "Принимать" (Accept).
-
Аутентификация:
- Включите анонимную аутентификацию на IIS10, чтобы не блокировать запросы без соответствующих учетных данных.
Подготовка IIS7 (Бэкенд-сервер)
-
Настройки HTTPS:
- Убедитесь, что на IIS7 отключены HTTPS-привязки. Это позволит избежать необходимости в обработке SSL на этом сервере.
-
Аутентификация SSL:
- В параметрах SSL не требуйте клиентских сертификатов. Это позволит вашему IIS7 принимать запросы как обычные HTTP-запросы.
Итоговая настройка
После настройки предложенной архитектуры запросы от клиентов будут поступать на сервер IIS10 по HTTPS, где будет выполнена аутентификация по клиентскому сертификату. После успешной аутентификации запросы будут переданы на IIS7 через HTTP, включая необходимые заголовки.
Таким образом, конфигурация позволит вам управлять сложной аутентификацией без изменения кода на устаревших веб-службах, в то время как ваша новая инфраструктура обеспечит безопасность и масштабируемость.
Заключение
Настройка IIS ARR как обратного прокси-сервера с клиентской аутентификацией по сертификатам — это эффективный способ современного управления безопасностью веб-служб. Данная схема рада предложить гибкость и поддержку для устаревших технологий, одновременно обеспечивая современный уровень безопасности.