Jak dodać certyfikat SSL do AWS EC2 za pomocą nowej usługi AWS Certificate Manager

91

AWS wymyślił nową usługę AWS Certificate Manager . Z opisu wynika, że ​​jeśli korzystamy z tej usługi, nie musimy już płacić za certyfikat.

Dostarczają certyfikaty dla Elastic Load Balancer (ELB) i CloudFront, ale nigdzie nie znalazłem EC2.

Czy jest sposób na wykorzystanie certyfikatu z EC2?

Bhavik Joshi
źródło
1
możesz rzucić okiem na letsencrypt.org, aby uzyskać darmowe i godne zaufania certyfikaty, z takimi współpracownikami, jak chrome i facebook, wygląda całkiem nieźle
Tom
1
Ow, nie wiedziałem o tym. Jednak myślę, że mają rację, nie pozwalając na to. Czy mógłbyś raczej utworzyć aliasy w innej domenie (na przykład przez Route53) i nie używać podanej domyślnej nazwy aws dns?
Tom
Niedawno natknąłem się na wideo [kwiecień - 2020], w którym tworzą certyfikat SSL \ TLS za pomocą Menedżera certyfikatów AWS, a następnie umieszczają go na wystąpieniu EC2 za modułem równoważenia obciążenia. youtu.be/bWPTq8z1vFY To było naprawdę pomocne.
nktsamba

Odpowiedzi:

109

P: Czy mogę używać certyfikatów w instancjach Amazon EC2 lub na własnych serwerach?

Nie. Obecnie certyfikaty dostarczone przez ACM mogą być używane tylko z określonymi usługami AWS.


P: Z jakimi usługami AWS mogę korzystać z certyfikatów dostarczanych przez ACM?

Możesz używać ACM z następującymi usługami AWS:

• Elastyczne równoważenie obciążenia

• Amazon CloudFront

• AWS Elastic Beanstalk

• Amazon API Gateway

https://aws.amazon.com/certificate-manager/faqs/

Nie możesz zainstalować certyfikatów utworzonych przez Amazon Certificate Manager (ACM) na zasobach, do których masz bezpośredni dostęp niskiego poziomu, takich jak EC2 lub serwery poza AWS, ponieważ nie masz dostępu do kluczy prywatnych. Te certyfikaty mogą być wdrażane tylko na zasobach zarządzanych przez infrastrukturę AWS - ELB i CloudFront - ponieważ infrastruktura AWS przechowuje jedyne kopie kluczy prywatnych do certyfikatów, które generuje i utrzymuje je pod ścisłym bezpieczeństwem dzięki audytowalnej wewnętrznej kontroli dostępu .

Musiałbyś mieć maszyny EC2 nasłuchujące za CloudFront lub ELB (lub oba, kaskadowo, również działałyby), aby używać tych certyfikatów dla treści pochodzących z EC2 ... ponieważ nie możesz zainstalować tych certyfikatów bezpośrednio na maszynach EC2 .

Michael - sqlbot
źródło
11
Dobra wiadomość jest taka, że ​​nie ma żadnych opłat, jeśli wydałeś certyfikat i właśnie tutaj dowiedziałeś się, że nie możesz go zainstalować.
kraftydevil
1
lol @kraftydevil Myślę, że masz rację. Pamiętaj, że letsencrypt.org jest legalnym, uznanym, niedochodowym źródłem bezpłatnych certyfikatów SSL, które możesz zainstalować w dowolnym miejscu. (I mogę dodać, nie mam powiązania z Let's Encrypt.)
Michael - sqlbot
6
@EngineerDollery nie, to jest prawdziwe tylko dla jednego konkretnego przypadku. Absolutnie możesz używać Let's Encrypt na EC2. Nie możesz uzyskać certyfikatu Let's Encrypt dla *.amazonaws.comnazwy hosta EC2, ponieważ rozsądnie zasada Let's Encrypt na to nie zezwala ... ale w przypadku domeny, którą kontrolujesz, która wskazuje na adres IP instancji EC2, ELB lub CloudFront, z całą pewnością możesz użyć Let's Encrypt, tak samo jak gdziekolwiek indziej.
Michael - sqlbot
2
Link do przykładu z zautomatyzowanym certyfikatem Let's
Efren
Po ustawieniu ELB wszystko teraz otrzymuję 502 Bad Gateway, kiedy wskazałem rekord na ELB
MuaathAli
2

Nie, nie możesz używać menedżera certyfikatów aws do wdrażania certyfikatów na EC2. Certyfikaty menedżera certyfikatów można wdrażać tylko w przypadku chmury i elastycznego modułu równoważenia obciążenia. Aby używać go na ec2, musisz umieścić elb na ec2, aby żądanie od klienta do load balancera było chronione https, a od elb do ec2 webserver było na http.

prasoon
źródło
1

Jeśli używasz AWS ACM Cert tylko do celów wewnętrznych, prawdopodobnie możesz użyć AWS ACM Private CA do wystawiania certyfikatów (myślę, że możesz go również używać do celów ruchu publicznego / zewnętrznego, jeśli twój główny urząd certyfikacji jest zaufanym urzędem certyfikacji).

https://docs.aws.amazon.com/acm-pca/latest/userguide/PcaGetStarted.html

Podczas uruchamiania aplikacji / EC2 / kontenera ustaw krok w celu wyeksportowania certyfikatu / klucza prywatnego wydanego przez ACM Private CA do miejsca docelowego i zacznij go odnosić do obsługi ruchu.

https://docs.aws.amazon.com/cli/latest/reference/acm/export-certificate.html

Jedną dobrą rzeczą jest to, że możesz kontrolować, kto może wywoływać funkcję eksportu certyfikatu przy użyciu roli IAM, więc nie każdy może pobrać klucz prywatny certyfikatu.

Jedynym minusem jest to, że prywatne CA to kosztowna usługa AWS (400 USD / miesiąc). https://aws.amazon.com/certificate-manager/pricing/

Imran
źródło
Nie możesz użyć certyfikatu eksportowego z ACM PCA - ale też go nie potrzebujesz: masz już klucz prywatny, a get-certificate daje ci certyfikat i łańcuch.
bezpłatny Willaert
@FreeWillaert Jestem prawie pewien, że nie dostaniesz części klucza prywatnego z get-certificate. sprawdź tę dokumentację CLI . i to . Sprawdź oba wyjścia odpowiedzi CLI. Testowałem już te polecenia CLI.
Imran
@FreeWillaert tak :). Powyższe polecenie CLI może być użyte w skrypcie startowym Docker lub skrypcie danych użytkownika EC2 w celu pobrania certyfikatu klucza prywatnego w czasie wykonywania i rozpoczęcia ich wykorzystywania do obsługi ruchu TLS. Specjalnie w ASG. Zaletą jest to, że możesz kontrolować, kto może wywoływać powyższe polecenie CLI przy użyciu ról IAM, więc nie każdy ma dostęp do kluczy prywatnych.
Imran
1
@Imran powinieneś napisać pogrubioną czcionką One downside with this is, private CA is expensive AWS service($400/month).na górze, bo na przykład przegapiłbym to, gdybym nie przeczytał tej odpowiedzi 2 raz
Piekarski D
@PiekarskiD gotowe. Dzieki za sugestie!!. jeśli podoba ci się moja odpowiedź, zawsze możesz głosować za.
Imran
0

Dodając do powyższych komentarzy, nie możesz użyć do tego Menedżera certyfikatów AWS, ale możesz dodać certyfikat Let's Encrypt do ec2 na serwerze Windows z usługami IIS i jest to całkiem proste:

  1. Skojarz elastyczny adres IP z instancją ec2.

  2. Upewnij się, że masz zarejestrowaną domenę. Nie możesz używać nazw typu ec2----------.us-east-1.compute.amazonaws.com, które są dostarczane z instancją.

  3. Dzięki ustawieniom DNS dostawcy domeny Twoja domena wskazuje Twój elastyczny adres IP.

  4. Połącz się z instancją ec2 i dodaj nazwę domeny do powiązań witryny.

  5. Przejdź do https://github.com/PKISharp/win-acme/releases

  6. Zajrzyj pod zasoby i użyj najnowszej wersji (na przykład win-acme.v2.0.10.444.zip). To jedyny potrzebny folder zasobów.

  7. Rozpakuj folder, otwórz terminal jako administrator i cd do rozpakowanego folderu.

  8. Uruchom wacs.exe i postępuj zgodnie z instrukcjami.

  9. Upewnij się, że grupa zabezpieczeń przypisana do Twojej instancji zezwala na ruch (przynajmniej Twój własny adres IP) przez port HTTPS wybrany w usługach IIS; jest to domyślnie port 443.

Poniższe linki okazały się pomocne, kiedy się nad tym zastanawiałem. Oto film wykorzystujący wcześniejszą wersję, jeśli potrzebujesz więcej pomocy, ale to ten sam pomysł.

https://www.youtube.com/watch?v=fq5OUOjumuM

Pomocny może być również ten artykuł:

https://weblog.west-wind.com/posts/2016/feb/22/using-lets-encrypt-with-iis-on-windows

Pan J.
źródło