Как включить HTTPS в AWS Elastic Load Balancer?

Я пытаюсь добавить HTTPS в свой AWS Elastic Load Balancer.

Я получил сертификат через AWS Certificate Manager:  введите описание изображения здесь

Я включил HTTPS в балансировщике нагрузки:  введите описание изображения здесь

Я убедился, что группа безопасности для балансировщика нагрузки принимает 0.0.0.0/0 на 443: введите описание изображения здесь

При переходе в мой домен по HTTP работает.

Однако при попытке загрузить мой домен по HTTPS он не работает ("ERR_CONNECTION_TIMED_OUT")


ИЗМЕНИТЬ и ОБНОВИТЬ:

Это API, для которого я пытаюсь заставить работать HTTPS, не обязательно для домена. Домен обслуживает статический файл (веб-приложение angular) из S3, и именно angular вызывает балансировщик нагрузки (для передачи запроса в экземпляр EC2) для данных БД.

Когда angular вызывает api напрямую через доменное имя балансировщика нагрузки через HTTP, запрос отвечает ожидаемым образом.

Когда angular выполняет тот же вызов api через HTTPS, я получаю следующую ошибку:

введите описание изображения здесь


comment
Все выглядит правильно. Вы уверены, что ваш домен указывает на балансировщик нагрузки, а не непосредственно на экземпляр?   -  person Mark B    schedule 25.12.2016
comment
@MarkB Спасибо, Марк Б, это хорошее соображение ... Я не уверен! Позвольте мне проверить это!   -  person aero    schedule 25.12.2016
comment
@MarkB Спасибо, Марк Б., я обновил свой вопрос, добавив больше информации. Angular js напрямую вызывает доменное имя балансировщика нагрузки в своих запросах api - и не работает, когда он работает через HTTPS.   -  person aero    schedule 26.12.2016


Ответы (2)


Вы включили HTTPS для своего доменного имени, а не для домена ELB, которым владеет Amazon. Вы можете создавать SSL-сертификаты только для своих доменов. Вы не можете включить SSL для «mydomain.com», а затем ожидать, что это каким-то образом сработает в совершенно другом домене. Вам необходимо изменить свой код AngularJS, чтобы ссылаться на API по вашему личному доменному имени, для которого вы создали сертификат SSL. Вам необходимо указать домен на ELB и установить SSL-сертификат для домена на ELB.

person Mark B    schedule 26.12.2016
comment
Ха, я полагаю, это довольно очевидно. Спасибо, что помог мне увидеть лес (за деревья). - person aero; 26.12.2016

Mark B предоставил почти полное решение.

Поскольку мой код javascript вызывает эластичный балансировщик нагрузки (ELB) через его DNS-имя, предоставленное AWS, я не могу получить сертификат SSL для домена, которым я не владею.

Как отметил Марк Б, мне нужно указать свой код javascript на домен, которым я владею, и иметь сертификат SSL для него.

Таким образом, я могу создать поддомен (например, api.mydomain.com) принадлежащего мне домена, который затем будет указывать на ELB.

Запись A (например, домен, указывающий на IP-адрес) выглядит так, как будто может соответствовать потребностям.

Однако запись A не может указывать на ELB, потому что ее IP-адрес может измениться.

Недостающим шагом было использование AWS Route 53 для указания записи A на псевдоним (Route 53 позволяет это сделать), который представляет мой AWS Elastic Load Balancer.

person aero    schedule 27.12.2016