Konfiguracja HTTPS w Amazon EC2

104

Jak włączyć HTTPS w Amazon EC2? Nasza strona działa na HTTP.

Muhammed Asharaf
źródło
dobre pytanie, ale ustawiłem grupę bezpieczeństwa i żaden urok się nie dzieje
Shark Deng

Odpowiedzi:

78

Najpierw musisz otworzyć port HTTPS (443). Aby to zrobić, wejdź na https://console.aws.amazon.com/ec2/ i kliknij Security Groupslink po lewej stronie, a następnie utwórz nową grupę bezpieczeństwa z dostępnym również HTTPS. Następnie zaktualizuj grupę zabezpieczeń działającej instancji lub utwórz nową instancję przy użyciu tej grupy.

Po tych krokach Twoja praca EC2 jest zakończona i to wszystko jest problemem z aplikacją.

Daniele Dellafiore
źródło
15
Udało mi się dodać nową regułę dla portu 443 do grupy zabezpieczeń używanej przez instancję i po prostu zaczęła działać bez ponownego uruchamiania.
Dmitry Efimenko
9
you can't change a security group of a running instance, even rebooting- Myślę, że to ograniczenie zostało usunięte od czasu opublikowania tej odpowiedzi.
Yuriy Nakonechnyy
11
Nie musisz zmieniać grupy bezpieczeństwa, możeszEdit inbound rules
Khoi
8
@ nikhil84 dodając HTTPS do grupy bezpieczeństwa, otworzyłeś tylko port 443 na komputerze, co jest krokiem 1. Po drugie, musisz skonfigurować serwer na tym komputerze, aby nasłuchiwał portu 443 (zamiast domyślnego portu HTTP 80) i akceptował ruch HTTPS. Z jakiego serwera korzystasz?
Yuriy Nakonechnyy
4
@ nikhil84 proszę postępować zgodnie z wytycznymi wymienionymi tutaj: digitalocean.com/community/tutorials/ ... aby skonfigurować https na Apache HTTPD
Yuriy Nakonechnyy
40

Ta odpowiedź jest skierowana do osoby, która kupuje domenę w innej witrynie (jako GoDaddy) i chce korzystać z bezpłatnego certyfikatu Amazon z Menedżerem certyfikatów

Ta odpowiedź wykorzystuje Amazon Classic Load Balancer (płatny), zapoznaj się z ceną przed jej użyciem


Krok 1 - Poproś o certyfikat za pomocą Menedżera certyfikatów

Wybierz opcję Menedżer certyfikatów> Żądaj certyfikatu> Żądaj certyfikatu publicznego

Na nazwę domeny można dodawać myprojectdomainname.comi *.myprojectdomainname.comi iść na Next

Wybierz weryfikację adresu e-mail i potwierdź i poproś

Otwórz otrzymaną wiadomość e-mail (na koncie e-mail, na którym kupiłeś domenę) i zatwierdź żądanie

Następnie sprawdź, czy status walidacji jest prawidłowy myprojectdomainname.comi *.myprojectdomainname.comjest pomyślny, jeśli jest pomyślny, możesz przejść do kroku 2

Krok 2 - Utwórz grupę zabezpieczeń w module równoważenia obciążenia

W EC2 przejdź do Security Groups> i utwórz grupę bezpieczeństwa oraz dodaj przychodzące http i https

Będzie to coś takiego: wprowadź opis obrazu tutaj

Krok 3 - Utwórz moduł równoważenia obciążenia

EC2> Load Balancer> Utwórz Load Balancer> Klasyczny Load Balancer (trzecia opcja)

Utwórz LB wewnątrz - vpc projektu W protokole Load Balancer dodaj Http i Https wprowadź opis obrazu tutaj

Dalej> Wybierz wychodzącą grupę bezpieczeństwa

Wybierz grupę zabezpieczeń, którą utworzyłeś w poprzednim kroku

Dalej> Wybierz certyfikat z ACM

Wybierz certyfikat z kroku 1

Dalej>

przy sprawdzaniu stanu użyłem ścieżki ping / (jeden ukośnik zamiast /index.html)

Krok 4 - Skojarz swoją instancję z grupą zabezpieczeń modułu równoważenia obciążenia

EC2> Instancje> kliknij swój projekt> Działania> Sieć> Zmień grupy zabezpieczeń

Dodaj grupę zabezpieczeń swojego modułu równoważenia obciążenia

Krok 5

EC2> Load Balancer> Kliknij na utworzony przez siebie load balancer> skopiuj nazwę DNS (rekord A), będzie to coś w rodzaju myproject-2021611191.us-east-1.elb.amazonaws.com

Idź do Route 53> Routes Zones> kliknij nazwę domeny> Go to Records Sets (jeśli nie masz tutaj swojej domeny, utwórz strefę hostowaną z Domain Name: myprojectdomainname.comi Type: Public Hosted Zone)

Sprawdź, czy masz rekord typu A (prawdopodobnie nie), utwórz / edytuj zestaw rekordów z pustą nazwą, typem A, aliasem Tak i kieruj na skopiowane dns

Utwórz także nowy zestaw rekordów typu A , nazwę *.myprojectdomainname.com, alias Tak i kieruj na swoją domenę (myprojectdomainname.com). Umożliwi to dostęp do Twojej witryny za pośrednictwem www.myprojectdomainname.com i subsite.myprojectdomainname.com. Uwaga: aby to zrobić, musisz skonfigurować odwrotne proxy (Nginx / Apache).

Na NS skopiuj 4 wartości serwerów nazw do użycia w następnym kroku, będzie to mniej więcej tak:

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

Przejdź do EC2> Instancje> I skopiuj również publiczny adres IP IPv4

Krok 6

Na stronie rejestru domen, w której kupiłeś domenę (w moim przypadku GoDaddy)

Zmień trasowanie na http : <Your IPv4 Public IP Number>i wybierz opcję Przekaż z maskowaniem

Zmień serwery nazw (NS) na 4 skopiowane NS, może to potrwać 48 godzin

DigaoParceiro
źródło
Czy muszę używać modułu równoważenia obciążenia, jeśli chcę korzystać z protokołu HTTPS?
Curtis,
Zrobiłem to wszystko, ale otrzymuję ERR_CONNECTION_TIMED_OUT, gdy trafiam do mojej domeny w przeglądarce
Curtis
1
Musiałem stworzyć system równoważenia obciążenia z nową grupą docelową na porcie 80, a następnie wyedytować odbiorniki, aby używały portu 80. Działa teraz. Dzięki.
Curtis,
1
@Curtis Load balancer nie jest jedyną opcją korzystania z protokołu HTTPS, możesz także skonfigurować opcję „
Zaszyfruj
@DigaoParceiro Co zrobiłeś z krokiem 5. skopiowaną nazwą DNS?
Prashant
9

Instancje Amazon EC2 to tylko maszyny wirtualne, więc należy skonfigurować SSL w taki sam sposób, jak na dowolnym serwerze.

Nie wspominasz o platformie, na której jesteś, więc trudno jest podać więcej informacji.

Geoff Appleford
źródło
Witam - korzystam z instancji T2.Micro Amazon Linux EC2. Używam node.js do wsparcia serwera. Słucham portu 443 w moim skrypcie serwera, a moja grupa zabezpieczeń jest skonfigurowana dla portu 443. Co jeszcze muszę zrobić, aby włączyć protokół HTTPS? Potrzebuję certyfikatu, prawda? Mam problem ze znalezieniem przyzwoitych informacji na ten temat, które NIE są oparte na Elastic Beanstalk.
Stephen Tetreault
2
@SMT - zajrzyj na letsencrypt.org, aby uzyskać bezpłatne i automatycznie odnawiane certyfikaty. Jest wiele informacji (przez Google) na temat konfiguracji za pomocą node. Nie musisz nic więcej robić, co jest specyficzne dla AWS / EC2.
Geoff Appleford
2
Dziękuję za odpowiedź! Właściwie uruchomiłem go pewnego dnia i usprawniłem kilka kroków. Jeśli ktoś czyta to z przyszłości: github.com/MSCHF/aws-ec2-node-npm-setup
Stephen Tetreault
5

Stare pytanie, ale warto wspomnieć o innej opcji w odpowiedziach. W przypadku, gdy system DNS Twojej domeny został zdefiniowany w Amazon Route 53, możesz skorzystać z usługi Amazon CloudFront przed swoim EC2 i dołączyć do niego bezpłatny certyfikat SSL Amazon. W ten sposób skorzystasz zarówno z posiadania CDN, aby szybciej dostarczać treści, jak i z zabezpieczenia domeny za pomocą protokołu HTTPS.

Witam W.
źródło
Czy jest jakaś referencja lub blog, na którym wspomina się o krokach, aby to osiągnąć?
Saurabh Yadav
w tym filmie atiqur rahman uzyskuje certyfikat ssl za pomocą menedżera certyfikatów amazon, a następnie konfiguruje front chmury z instancją EC2. Po konfiguracji protokół http / 2 jest automatycznie włączany.
Sachithra Dilshan
2

Korzystaj z elastycznego równoważenia obciążenia , obsługuje zakończenie SSL w module równoważenia obciążenia, w tym odciążanie deszyfrowania SSL z instancji aplikacji i zapewnia scentralizowane zarządzanie certyfikatami SSL.

Peter Hulsen
źródło
16
Nie używasz ELB tylko do dostarczania SSL, to właściwie dość myląca odpowiedź. Twój serwer musi zapewnić SSL niezależnie, więc dodanie modułu równoważenia obciążenia to tylko dodatkowy koszt, jeśli go nie potrzebujesz. Jest to również zakończenie SSL w oprogramowaniu, więc SSL między modułem równoważenia obciążenia a serwerami jest dodatkowym krokiem wpływającym na wydajność.
Thomas the Tank Engine
1
Zgadzam się z twoim komentarzem. Zwiększy to dodatkowe koszty i wpłynie na wydajność. Nie znamy ich dokładnych wymagań w zakresie obciążenia serwerów, więc wciąż może być do zrobienia. Ale nie rozumiem twojej uwagi "Twój serwer musi zapewnić SSL mimo wszystko", dlaczego jest to potrzebne? Moduł równoważenia obciążenia obejmuje również odciążanie SSL. Dzięki.
Peter Hulsen
2
Tak, prawda. Możesz go użyć do zapewnienia SSL w prosty sposób. Myślę tylko, że instancje nadal mają publiczne wartości DNS, do których użytkownicy mogą uzyskać bezpośredni dostęp z dowolnego powodu. Gdyby tak się stało, może być tak, że chciałbyś zmusić go do używania SSL.
Thomas the Tank Engine
Wiem, że ten komentarz jest spóźniony, ale z mojego zrozumienia, jeśli chcesz użyć zarejestrowanej nazwy domeny, musisz użyć ELB, ponieważ adres IP EC2 jest uważany za „niestały” i dlatego nie może używać Twojego certyfikatu SSL. Z drugiej strony, jeśli używasz tylko DNS dostarczonego przez Amazon, to może nie potrzebuje ELB, nie sprawdziłem.
heksykul
0

Jednym z najlepszych zasobów, jakie znalazłem, było użycie Let's encrypt, nie potrzebujesz ELB ani Cloudfront, aby Twoja instancja EC2 miała HTTPS, po prostu wykonaj następujące proste instrukcje: zaszyfrujmy Zaloguj się do twojego serwera i postępuj zgodnie z instrukcjami w linku.

Ważne jest również, jak wspominali inni, że masz otwarty port 443, edytując grupy zabezpieczeń

Możesz wyświetlić swój certyfikat lub dowolną inną witrynę internetową, zmieniając nazwę witryny w tym łączu

Nie zapominaj, że jest ważny tylko przez 90 dni

Mustafa
źródło