HSTS и перенаправления в IIS 8.5

У меня проблема с тем, чтобы мой сервер IIS 8.5 работал должным образом. Я пытаюсь разместить два домена на одном IP-адресе, оба на https, используя отдельные веб-серверы.

Естественно, IIS настроен как мой «основной» веб-сервер, прослушивая 80 и 443. Один домен настроен здесь с ssl сертификат. Я использую " http://example1.com -> URL Rewrite -> https://example1.com https://example1.com -> разрешается и обслуживается из IIS

http://example2.com -> HTTP Redirect -> https://example2.com:8443 https://example2.com:8443 -> разрешается и обслуживается от Apache

Моя проблема заключается в том, что браузер (FF или Chrome) посещает http://example2.com и перенаправляется на https://example2.com:8443 , последующие посещения всегда идут на https://example2.com (без порта). Это не удается, потому что во время подтверждения ssl браузеру выдается сертификат example1.

Я отследил это до этих двух браузеров, использующих HSTS. Как только я очищаю кеш HSTS, они мы снова сможем найти правильный сайт (с портом).

Как я могу заставить эту настройку работать бесперебойно? Я не вижу ничего в конфиге Apache, который устанавливает HSTS, поэтому я предполагаю, что это перенаправление IIS. Я просмотрел этот ответ , обсуждая HSTS в IIS, думая, что могу изменить предложение Дуга, чтобы установить max-age на ноль, чтобы предотвратить его установку, но похоже, что это не так. работа.

Решение:

Основываясь на предложении ниже, лучшим решением является размещение обоих доменов в IIS, привязка сертификатов SSL и установка флажка «Требовать указания имени сервера» в привязке. Мне пришлось сделать это для всех доменов, использующих IP. Затем я мог бы создать обратный прокси (требуются модули перезаписи URL и маршрутизации запросов приложений), который будет передавать трафик экземпляру, размещенному на Apache.

0
задан 13 April 2017 в 15:14
1 ответ

С текущей настройкой невозможно.

В HSTS RFC указано следующее:

UA ДОЛЖЕН заменить схему URI на "https" [RFC2818], и

, если URI содержит явный компонент порта "80", тогда UA ДОЛЖЕН преобразовывать компонент порта в "443", или

если URI содержит явный компонент порта, который не является равное "80", значение компонента порта ДОЛЖНО быть сохранено; в противном случае

если URI не содержит явной компоненты порта, UA НЕ ДОЛЖНО добавлять.

ПРИМЕЧАНИЕ: Эти шаги гарантируют, что политика HSTS применяется к HTTP через любой TCP-порт HSTS-хоста.

Таким образом, переход на http://www.example2.com:8443 сохранит порт и перенаправит его на https://www.example2.com:8443, но вы не можете сделать то же самое с http://www. example2.com.

Итак, у вас есть следующие варианты:

  1. Остановить использование HSTS в Apache для example2.com и использовать его только в IIS для example1.com

  2. Использовать один основной сервер для прослушивания портов 80 и 443 и прокси-запросов для example.com на другой сервер на порту 8443. Это гораздо чище, так как не требует использования пользователем нестандартных портов, таких как 8443. Однако, поскольку вы используете один и тот же IP-адрес для обоих, вы должны либо использовать процесс под названием Server Name Identification или SNI (который не поддерживается старыми браузерами, такими как XP/IE8), чтобы правильно обслуживать одни и те же хосты по одному и тому же IP-адресу для HTTPS, либо использовать один и тот же cert для обоих сайтов в качестве обходного пути (смотрите ответ здесь для объяснения того, как это работает ).

0
ответ дан 5 December 2019 в 10:39

Теги

Похожие вопросы