Почему я получаю ошибку 502 с ARR только когда включен SSL?

Вопрос или проблема

У меня есть конфигурация с ARR на фронтальном сервере и веб-фармой IIS (8) за ним. SSL включен с использованием одного и того же сертификата на сервере ARR и серверах веб-фирмы IIS, и я не использую разгрузку SSL. Серверы используют Shared Config, поэтому настройка в теории идентична. Интересно, что когда конфигурация ARR с круглым робином попадает на ОДИН из серверов, он возвращает ошибку “502 – Веб-сервер получил недействительный ответ, действуя как шлюз или прокси-сервер”. Другой сервер возвращает страницу нормально с работающим SSL. Если я прямо указываю браузер на “плохой” сервер без ARR, он нормально работает в HTTPS / SSL-режиме. Я проверил конфигурации и не нашел ничего отличного между серверами, даже включил трассировку неудачных запросов на сервере ARR, что не было полезным, но я увидел другую ошибку 502.3 в журнале. Почему я получаю ошибку 502 любого рода, особенно на одном сервере в ферме, когда они настроены идентично с общей конфигурацией и сертификаты присутствуют на всех серверах?

Даже с IIS, настроенным на общую конфигурацию со всеми узлами, операционная система каждого узла может устанавливать привязки SSL вне IIS, которые не будут общими для узлов. Поэтому я считаю, что проблема заключается в привязке SSL на стороне ОС (не IIS) на одном узле и, следовательно, не позволяет соответствовать тому, что IIS запрашивала. Чтобы исправить это, проверьте привязки SSL ОС и сравните с другими узловыми серверами, исправьте любые различия, чтобы узлы совпадали, это решит вашу проблему.

У меня была аналогичная проблема, и по ошибке один из моих коллег забыл отметить использование SNI при привязке сертификата, из-за чего он был внесен в ОС и привязан там. Впоследствии изменение этого на использование SNI не удалило привязку SSL в ОС, и после некоторых проверок мы это заметили и удалили, и все снова стало хорошо.

Позвольте мне ответить на собственный вопрос.

Я отключил “Требовать указание имени сервера” и вдруг все заработало. Это странно, потому что SNI был включен на всех серверах в ферме для одного и того же сайта, но на одном из них, снятие отметки сделало все рабочим.

Моя теория такова: даже с общей конфигурацией информация о привязке SSL не действительно переносится от одного сервера к другому, от IP к сертификату. Как многие из вас знают, вам все равно нужно вручную зайти на другой сервер и выбрать сертификат.

Так что это был подсказка о том, как настройки могут отличаться. Я действительно считаю, что настройки визуально были одинаковыми, но где-то под капотом что-то было отличным для одной привязки каким-то образом.

В любом случае, я потратил часы на эту проблему и нигде не читал ничего о том, что “Требовать указание имени сервера” связано с ошибкой 502. Поэтому я хотел поделиться этим с интернет-сообществом, чтобы будущие люди знали, на какую настройку нужно обратить внимание, если они сталкиваются с ошибкой 502 при использовании SSL.

Может быть, есть способ оставить его включенным, так как он работал на остальной части моей фермы, но, по крайней мере, вы будете знать, в какой области вам нужно искать, чтобы решить вашу ошибку 502.

Конечно, помните, что основной причиной ошибок 502, по моему мнению, является отсутствие установки сертификата на всех серверах при отсутствии разгрузки SSL, но это не была моя проблема, а моя была уникальна тем, что только один сервер в ферме некорректно работал с включенным SSL.

Надеюсь, это поможет кому-то другому.

У меня возникала аналогичная ошибка. Прямой переход к Url работал нормально, однако ARR выдавал 502 ошибки безопасности. Я использую самоподписанный сертификат для разработки, и оказывается, что “как” я создаю сертификат имеет значение. Когда я использую Powershell:

New-SelfSignedCertificate -DnsName *.localmachine.com  -CertStoreLocation cert:\LocalMachine\My

Сертификат работает нормально, когда я напрямую обращаюсь к нескольким сайтам, использующим сертификат, однако через ARR возникают ошибки. Если я использую старый способ makecert:

makecert -n "CN=*.localmachine.com" -pe -ss My -sr LocalMachine -sky exchange -m 120 -in "WebTeam Dev WildCard Root CA" -is Root -ir LocalMachine -a sha256 -eku 1.3.6.1.5.5.7.3.1

Это работает отлично как напрямую, так и через ARR – даже журналы трассировки не давали никаких подробностей о том, в чем была настоящая проблема 🙁

Ошибка 502 с ARR (Application Request Routing) при включенном SSL обычно возникает из-за проблем с обработкой сертификата SSL или неправильной настройки в настройках ARR или IIS. Вот некоторые распространенные причины:

Проблемы с сертификатом SSL: Сертификат SSL может быть некорректно установлен или настроен на сервере, что вызывает сбой ARR при попытке перенаправить защищенный трафик.

Конфигурация серверов на заднем плане: Если ARR перенаправляет запросы на сервер на заднем плане, который не поддерживает SSL или имеет недействительный сертификат SSL, это может привести к ошибке 502.

Тайм-аут прокси: SSL-протоколы могут занимать больше времени, чем обычно, и если возникают тайм-ауты между сервером ARR и сервером на заднем плане, может возникнуть ошибка 502.

Проблемы с брандмауэром или сетью: SSL-трафик может быть заблокирован или подвергнут изменениям брандмауэрами или сетевыми конфигурациями, что мешает нормальной коммуникации.

Ответ или решение

Получение ошибки 502 на сервере, использующем маршрутизацию запросов приложения (ARR) с включенным SSL, может быть связано с несколькими факторами. Ваша ситуация, где одна из серверов веб-фермы возвращает ошибку "502 – Веб-сервер получил недействительный ответ, действуя в качестве шлюза или прокси-сервера", в то время как другие работают без проблем, требует глубокой профессиональной оценки.

Причины возникновения ошибки 502 при использовании SSL с ARR

  1. Проблемы с SSL-сертификатом: Убедитесь, что SSL-сертификат установлен и правильно настроен на всех серверах. Это включает в себя обязательное наличие сертификата на проблемном сервере, так как даже небольшие несоответствия могут привести к ошибкам.

    • Отсутствие сертификата: Ошибка может возникнуть, если сертификат не установлен на одном из серверов веб-фермы.
    • Неправильный сертификат: Проверьте, что на каждом сервере используется одинаковый сертификат с правильным именем и расширениями.
  2. Настройки сервера и привязки SSL: Как вы уже заметили, даже при использовании общей конфигурации сервера настройки могут отличаться на уровне операционной системы. Проверьте настройки привязки SSL в IIS и в ОС.

    • SNI (Server Name Indication): Нужно проверить, включено ли SNI на всех серверах. Отключение этой настройки решило вашу проблему, что указывает на то, что на одном из серверов привязка SSL могла быть настроена неправильно или несоответственно.
    • Частные ключи: Убедитесь, что у всех сертификатов на всех серверах есть доступ к частным ключам.
  3. Конфигурация ARR: Проверьте, как настроены обратные прокси и правила маршрутизации в ARR. Иногда неправильные настройки могут привести к ошибкам в обработке запросов.

    • Тайм-ауты: SSL-шифрование может замедлять процесс, и иногда ARR может превышать время ожидания. Убедитесь, что параметры тайм-аутов, связанные с SSL, настроены адекватно.
  4. Проблемы сети и фаервола: Неправильные сетевые настройки или фаервол могут блокировать SSL-трафик или не позволять корректное соединение между ARR и серверами фермы. Убедитесь, что все порты открыты и конфигурации сетевых устройств правильно настроены.

Рекомендации по устранению проблемы

  • Сравнение конфигураций: Проанализируйте настройки всех серверов и сравните их, включая настройки на уровне ОС. Используйте PowerShell или другие инструменты для извлечения информации о привязках SSL.

  • Логи и трассировка ошибок: Активируйте трассировку запросов, чтобы получить больше информации о проблемах, возникающих на сервере ARR. Хотя вы упоминали, что логирование не дало достаточной информации, повторные проверки могут раскрыть дополнительные детали.

  • Тестирование с самоподписанными сертификатами: Если вы используете самоподписанные сертификаты для разработки, убедитесь, что они корректно настроены и не используется устаревшее ПО для их создания. Попробуйте различные инструменты для создания сертификатов, чтобы исключить возможные ошибки в их настройке.

Заключение

Ошибка 502 в конфигурации с ARR и SSL может вызывать множество различных факторов, включая некорректные привязки SSL и различия в конфигурации серверов. Применяя системный анализ и пошаговое устранение неполадок, можно идентифицировать и устранить проблемы более эффективно. Накопленный опыт сообщества может быть полезен для понимания сложных аспектов работы SSL с ARR и IIS, как это произошло в вашем случае.

Оцените материал
Добавить комментарий

Капча загружается...