Создание защищенного веб-сервера HTTP с помощью Fargate + ACM + ALB

Я пытаюсь выполнить простейшее развертывание, чтобы настроить веб-сервер https и запустить его в Fargate.

Я использовал Amazon Certificate Manager для создания публичного сертификата.

У меня есть Application Load Balancer, который общается с контейнером Fargate на двух портах: 80 для http и 443 для https

Это проблема: когда я запускаю свой веб-сервер через порт 80 (http) и подключаюсь через ALB, он работает нормально (небезопасно, но обслуживает html).

Когда я запускаю свой веб-сервер через порт 443 с включенным протоколом TLS, он не подключается через ALB.

Другой момент заключается в том, что при работе моего веб-сервера с включенным протоколом TLS на порту 443 у меня нет сертификата или ключа сертификата, и поэтому я не совсем понимаю, как получить его от Amazon.

У меня есть еще один вопрос: имеет ли смысл говорить, что ELB будет связываться с клиентом по HTTPS, но что ELB может связываться с контейнером через HTTP? Это безопасно?

Спасибо за любую помощь, мои знания сети очень ржавые.

1 ответ

имеет ли смысл для меня говорить, что ELB будет связываться с клиентом по HTTPS, но что ELB может связываться с контейнером через HTTP?

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

client --(443)--> ALB --(80)--> web server

Некоторые вещи, чтобы проверить:

  • Целевая группа настроена на отправку трафика на ваш веб-сервер FG через порт 80
  • Проверка работоспособности целевой группы настроена для проверки порта 80
  • Группа безопасности задач FG имеет вход из ALB на порт 80
  • Веб-сервер настроен на прослушивание через порт 80

Sidenote: Вы можете настроить целевую группу для отправки трафика к цели (веб-серверу в Fargate) на 443, но, как вы сказали, без правильной настройки сертификата в контейнере вы не сможете должным образом завершить SSL, и это просто не сработает. Вам нужно будет загрузить свой собственный сертификат в ACM, чтобы это работало, что отправляет вас в безопасную кроличью нору, а именно, как избежать встраивания вашего закрытого ключа в ваш образ Docker.

Другие вопросы по тегам