Настройка HTTPS в Amazon EC2

105

Как включить HTTPS в Amazon EC2? Наш сайт работает по протоколу HTTP.

Мухаммед Ашараф
источник
хороший вопрос, но я установил группу безопасности, и никакого шарма не происходит
Shark Deng

Ответы:

79

Во-первых, вам нужно открыть порт HTTPS (443). Для этого перейдите на https://console.aws.amazon.com/ec2/ и щелкните Security Groupsссылку слева, затем создайте новую группу безопасности с доступным также HTTPS. Затем просто обновите группу безопасности работающего экземпляра или создайте новый экземпляр, используя эту группу.

После этих шагов ваша работа с EC2 будет завершена, и все это проблема приложения.

Даниэле Деллафиоре
источник
15
Мне удалось добавить новое правило для порта 443 в группу безопасности, используемую экземпляром, и оно просто начало работать, даже не перезагружая его.
Дмитрий Ефименко
9
you can't change a security group of a running instance, even rebooting- Думаю, это ограничение было снято с момента публикации этого ответа.
Юрий Наконечный
12
Вам не нужно менять группу безопасности, вы можетеEdit inbound rules
Хой
8
@ nikhil84, добавив HTTPS в группу безопасности, вы только открыли порт 443 на машине, что является шагом 1. Во-вторых, вам нужно настроить сервер на этой машине для прослушивания порта 443 (вместо порта HTTP по умолчанию 80) и приема трафика HTTPS. Какой сервер вы используете?
Юрий Наконечный
4
@ nikhil84, пожалуйста, следуйте инструкциям, перечисленным здесь: digitalocean.com/community/tutorials/… для настройки https на Apache HTTPD
Юрий Наконечный
41

Этот ответ ориентирован на тех, кто покупает домен на другом сайте (как GoDaddy) и хочет использовать бесплатный сертификат Amazon с диспетчером сертификатов.

В этом ответе используется Amazon Classic Load Balancer (платный), см. Цены перед его использованием


Шаг 1. Запросите сертификат с помощью диспетчера сертификатов

Перейдите в Диспетчер сертификатов> Запросить сертификат> Запросить общедоступный сертификат.

По имени домена вы будете добавлять myprojectdomainname.comи *.myprojectdomainname.comи дальше Далее

Выберите подтверждение электронной почты и подтвердите и запросите

Откройте полученное электронное письмо (в учетной записи электронной почты, в которой вы купили домен) и подтвердите запрос.

После этого проверьте, находится ли статус валидации myprojectdomainname.comи *.myprojectdomainname.comуспешно, если успешно, вы можете перейти к шагу 2.

Шаг 2 - Создайте группу безопасности для балансировщика нагрузки

На EC2 перейдите в «Группы безопасности»>, «Создайте группу безопасности» и добавьте входящие http и https.

Это будет примерно так: введите описание изображения здесь

Шаг 3 - Создайте балансировщик нагрузки

EC2> Балансировщик нагрузки> Создать балансировщик нагрузки> Классический балансировщик нагрузки (третий вариант)

Создайте LB внутри - vpc вашего проекта On Load Balancer Protocol добавьте Http и Https введите описание изображения здесь

Далее> Выбрать выход из группы безопасности

Выберите группу безопасности, которую вы создали на предыдущем шаге.

Далее> Выбрать сертификат из ACM

Выберите сертификат шага 1

Далее>

при проверке работоспособности я использовал путь ping / (одна косая черта вместо /index.html)

Шаг 4. Свяжите свой экземпляр с группой безопасности балансировщика нагрузки

EC2> Экземпляры> щелкните свой проект> Действия> Сеть> Изменить группы безопасности

Добавьте группу безопасности вашего балансировщика нагрузки

Шаг 5

EC2> Балансировщик нагрузки> Щелкните созданный вами балансировщик нагрузки> скопируйте DNS-имя (запись A), это будет что-то вроде myproject-2021611191.us-east-1.elb.amazonaws.com

Перейдите в Route 53> Routes Zones> щелкните имя домена> Перейти к Records Sets (если у вас нет здесь своего домена, создайте зону хостинга с помощью Domain Name: myprojectdomainname.comи Type: Public Hosted Zone)

Проверьте, есть ли у вас тип записи A (возможно, нет), создайте / отредактируйте набор записей с пустым именем, введите A, псевдоним Да и выберите DNS, который вы скопировали

Создайте также новый набор записей типа A , имя *.myprojectdomainname.com, псевдоним «Да» и настройте таргетинг на свой домен (myprojectdomainname.com). Это позволит получить доступ к вашему сайту с www.myprojectdomainname.com и subsite.myprojectdomainname.com. Примечание. Для этого вам необходимо настроить обратный прокси-сервер (Nginx / Apache).

На NS скопируйте значения 4 серверов имен для использования на следующем шаге, это будет примерно так:

ns-362.awsdns-45.com ns-1558.awsdns-02.co.uk ns-737.awsdns-28.net ns-1522.awsdns-62.org

Перейдите в EC2> Instances> И скопируйте также общедоступный IP-адрес IPv4.

Шаг 6

На сайте регистрации домена, на котором вы купили домен (в моем случае GoDaddy)

Измените маршрутизацию на http : <Your IPv4 Public IP Number>и выберите Вперед с маскированием.

Измените DNS-серверы (NS) на 4 NS, которые вы скопировали, это может занять 48 часов.

DigaoParceiro
источник
Должен ли я использовать балансировщик нагрузки, если мне нужен https?
Curtis
Я сделал все это, но получаю ERR_CONNECTION_TIMED_OUT, когда открываю свой домен в браузере
Кертис,
1
Мне нужно было сделать балансировщик нагрузки с новой целевой группой на порту 80, а затем отредактировать прослушиватели, чтобы использовать порт 80. Теперь работает. Спасибо.
Кертис
1
@Curtis Load balancer - не единственный вариант использования https, вы также можете настроить «позволяет шифровать» внутри вашего EC2
DigaoParceiro
@DigaoParceiro, что вы сделали на шаге 5. Скопировали DNS-имя?
Прашант
10

Инстансы Amazon EC2 - это просто виртуальные машины, поэтому вы должны настроить SSL так же, как и на любом сервере.

Вы не упоминаете, на какой платформе находитесь, поэтому вам сложно предоставить дополнительную информацию.

Джефф Эпплфорд
источник
Здравствуйте, я использую экземпляр T2.Micro Amazon Linux EC2. Я использую node.js для поддержки сервера. Я слушаю порт 443 в моем сценарии сервера, и моя группа безопасности настроена на порт 443. Что еще мне нужно сделать, чтобы включить HTTPS? Мне нужен сертификат, да? Возникли проблемы с поиском достойной информации об этом, которая НЕ основана на Elastic Beanstalk.
Стивен Тетро
2
@SMT - загляните на letsencrypt.org, где есть бесплатные и автоматически обновляемые сертификаты. Есть много информации (через Google) о том, как настроить его с помощью node. Больше вам ничего не нужно делать с AWS / EC2.
Джефф Эпплфорд
2
Спасибо за ответ! На днях я действительно заставил его работать и упростил некоторые шаги. Если кто-то читает это из будущего: github.com/MSCHF/aws-ec2-node-npm-setup
Стивен Тетро
5

Старый вопрос, но стоит упомянуть еще один вариант в ответах. Если система DNS вашего домена определена в Amazon Route 53, вы можете использовать сервис Amazon CloudFront перед своим EC2 и прикрепить к нему бесплатный SSL-сертификат Amazon. Таким образом, вы выиграете как от наличия CDN для более быстрой доставки контента, так и от защиты своего домена с помощью протокола HTTPS.

Привет W
источник
Есть ли ссылка или блог, где упоминаются шаги для достижения этой цели?
Саураб Ядав,
в этом видео atiqur rahman получает сертификат ssl с помощью диспетчера сертификатов Amazon, а затем настраивает облачный фронт с экземпляром EC2. После настройки http / 2 автоматически включается.
Сачитра Дилшан
4

Также должен быть ответ для людей, которым нужен бесплатный https на ec2, в основном для демонстрационных и тестовых целей, один из способов добиться этого очень быстро:

С моим ответом здесь, который описывает, как вы можете достичь https для целей тестирования за считанные минуты с EC2 без хлопот с созданием сертификатов.

Томер Бен Дэвид
источник
2

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

Питер Халсен
источник
16
Вы не используете ELB просто для предоставления SSL, это на самом деле довольно вводящий в заблуждение ответ. Ваш сервер должен предоставлять SSL независимо от того, поэтому добавление балансировщика нагрузки требует дополнительных затрат, если он вам не нужен. Это также завершение SSL в программном обеспечении, поэтому SSL между балансировщиком нагрузки и сервером (ами) является дополнительным шагом, влияющим на производительность.
Thomas the Tank Engine
1
Я согласен с вашим комментарием. Это добавит дополнительных затрат и повлияет на производительность. Мы не знаем их точных требований в отношении нагрузки на их серверы, так что это все еще может быть подходящим вариантом. Но мне непонятно ваше замечание «Ваш сервер все равно должен предоставлять SSL», зачем это нужно? Балансировщик нагрузки также включает разгрузку SSL. Спасибо.
Питер Халсен
2
Да, верно. Вы можете использовать это для простого предоставления SSL. Я просто думаю, что у экземпляров все еще есть общедоступные значения DNS, к которым пользователи могут обращаться напрямую по любой причине. Если бы это произошло, вполне возможно, что вы захотите также использовать SSL.
Thomas the Tank Engine
Я знаю, что этот комментарий запоздал, но, насколько я понимаю, если вы хотите использовать зарегистрированное доменное имя, вам нужно использовать ELB, потому что IP-адрес EC2 считается «непостоянным» и, следовательно, не может использовать ваш сертификат SSL. С другой стороны, если вы просто используете DNS, предоставленный Amazon, возможно, ему не нужен ELB, я не проверял.
hexicle
2

Вы также можете использовать Amazon API Gateway . Разместите свое приложение за API Gateway. Пожалуйста, проверьте этот FAQ

Бхушан
источник
0

Один из лучших ресурсов, который я нашел, - это использование Let's encrypt, вам не нужны ни ELB, ни облачный интерфейс для вашего экземпляра EC2, чтобы иметь HTTPS, просто следуйте следующим простым инструкциям: давайте зашифруем вход на ваш сервер и следуйте инструкциям по ссылке.

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

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

Не забывайте, что он действителен только 90 дней.

Мустафа
источник