В настоящее время я настроил свой веб-сайт в AWS ECS с архитектурой обратного прокси nginx с Docker. Однако прямо сейчас я столкнулся с проблемой защиты моего сайта с помощью HTTPS.

Я часами гуглил, выпустил диспетчер сертификатов Amazon, настроил балансировщик нагрузки приложений с помощью службы моего кластера, но безрезультатно. Мой nginx.conf прослушивает порт 80, в то время как мои внутренние службы также размещаются на порту 80. Cloudflare направляет мой веб-сайт на каждую службу с * .domain.com.

  • Итак, какой именно шаг мне может не хватать, или есть ли там подходящее руководство, на которое я могу ссылаться? Я надеюсь получить его с помощью Amazon Certificate Manager, лучше всего с автоматическим продлением. Второй вариант - это сертификат, подписанный вручную letsencrypt. Но я понятия не имею, как я могу сохранить сертификат, потому что мой репозиторий сейчас общедоступен.

  • В настоящее время у меня есть 2 адреса. domain.com и api.domain.com, которые работают на одном экземпляре ECS. Можно ли защитить их обоих, поскольку это было бы необходимо для этого, чтобы я мог выполнять внутренние вызовы из моего внешнего интерфейса (политика запросов HTTPS).

Заранее спасибо, ребята!

Обновить:

Я наконец-то получил SSL для работы с моим доменом. Для тех, кто сталкивается с такой же проблемой. Попробуйте вместо этого использовать классический балансировщик нагрузки, я несколько раз пробовал использовать Application Load Balancer и сопоставление с разными портами, но это не работает. Но это работает в тот момент, когда я использовал Classical Load Balancer.

1
Max Goh 30 Июл 2017 в 18:37

1 ответ

Лучший ответ
  1. Cloudflare должен направлять все в ALB, а не напрямую в ECS. Вы должны направить весь трафик через ALB, чтобы ALB обслуживал сертификат SSL.

  2. Когда вы запрашиваете сертификат в ACM, вы можете указать несколько доменов, для которых вы хотите, чтобы сертификат работал. Самый простой способ заставить сертификат работать для вашего домена и всех возможных субдоменов - запросить сертификат для «domain.com» и «* .domain.com».

2
Mark B 30 Июл 2017 в 19:01
Спасибо за ответ, но я не вижу IP-адреса для маршрутизации в ALB для Cloudflare. Кроме того, означает ли это, что мне нужно установить 2 ALB, потому что я могу установить только один сертификат для каждого ALB.
 – 
Max Goh
30 Июл 2017 в 19:02
Вы не можете использовать IP-маршрутизацию с балансировщиком нагрузки AWS. Вы должны указать на DNS-имя. Route53 предоставляет для этого механизм псевдонима, но, поскольку вы используете Cloudflare, вам следует изучить возможность использования выравнивания CNAME: blog.cloudflare.com/…
 – 
Mark B
30 Июл 2017 в 19:16
Что касается сертификата SSL, как я пытался объяснить в своем ответе, вы запрашиваете у ACM один сертификат, который подходит для нескольких доменов. Затем, когда вы прикрепляете этот единственный сертификат к ALB, он может разорвать SSL-соединения для всех запрошенных вами доменов.
 – 
Mark B
30 Июл 2017 в 19:18
Спасибо, я лучше понимаю, что происходит. Просто быстрый вопрос, в настоящее время у меня нет конфигураций SSL в моем nginx.conf, как мне разрешить nginx читать SSL без них?
 – 
Max Goh
30 Июл 2017 в 21:53
1
SSL прерывается на балансировщике нагрузки. Nginx не нужно ничего делать, чтобы SSL работал с этой конфигурацией.
 – 
Mark B
31 Июл 2017 в 01:53