Да хоть убей, я не могу понять, что делаю не так. Я следил за документами AWS, чтобы добавить SSL в классический ELB (я пробовал NLB, который все еще не помог нам).
По сути, у нас есть веб-сервер, который слушает порт 80. Я хочу, чтобы завершение SSL происходило на ELB.
Я правильно добавил ELB, добавил группу безопасности для его сетевых интерфейсов (даже пробовал опасно разрешить все входящие исходящие). Я также пробовал это для группы безопасности экземпляра.
Когда я перейду к https://mytestserver.com/resource по умолчанию он будет http, но для страницы входа будет отображаться https. После входа в систему он будет использовать http после.
Я читал смешанные вещи в docs / online, в которых говорилось, что для завершения SSL вам необходимо иметь порт прослушивателя 443 elb -> порт экземпляра 80 И также еще одно правило с портом прослушивателя 80 ELB ---> порт экземпляра 80.
Если я попытаюсь удалить правило для порта 80 elb listener -> instance port 80, я могу войти в систему, но страница зависнет.
Он загружает некоторые флеш-компоненты, поэтому я не отключил для этого порты. Я даже попробовал временно «разрешить» все, как ранее упоминалось для группы безопасности для LB и экземпляра.
Это заставляет меня думать, что веб-сервер экземпляра (это внешний клиентский веб-сервер, на котором запущено приложение, используемое нашей командой, которое использует причал) не любит какую-то вставку заголовка, которая происходит.
Когда я удалил прослушиватель порта 80 на elb, я включил свой компьютер с помощью wirehark, и он показал, что он все время пытается подключиться к порту 80 на elb .... любые идеи !?
Спасибо!
P.S. Я должен отметить, что без использования SSL http-версия сайта работает нормально.
Как только вы вошли в систему, ваш бэкэнд отправляет обратно Перенаправление HTTP с новым Расположение указав, куда теперь должен перейти браузер.
Поскольку вы завершаете SSL на ELB, серверное приложение, вероятно, обнаруживает, что трафик поступает на порт 80 через HTTP, и создает ссылку перенаправления как http://mytestserver.com/...
(обратите внимание, что это HTTP, потому что сервер считает, что запрос поступил по HTTP, так как ELB с ним общается).
Что вам нужно сделать, так это изменить свое приложение или конфигурацию сервера на всегда вернуть URL-адреса, начинающиеся с https://
. Как это сделать, зависит от вашего веб-приложения и / или используемого веб-сервера.
Одно из возможных решений можно найти здесь: AWS перенаправляет на SSL ERR_TOO_MANY_REDIRECTS
Надеюсь, это поможет :)