Hinzufügen eines SSL-Zertifikats zu AWS EC2 mithilfe des neuen AWS Certificate Manager-Dienstes


89

AWS hat einen neuen Service AWS Certificate Manager entwickelt . Eine Sache, die ich aus der Beschreibung erhalten habe, ist, dass wir das Zertifikat nicht mehr bezahlen müssen, wenn wir diesen Service nutzen.

Sie stellen Zertifikate für Elastic Load Balancer (ELB) und CloudFront bereit, aber ich habe EC2 nirgendwo gefunden.

Gibt es eine Möglichkeit, das Zertifikat mit EC2 zu verwenden?


1
Sie könnten einen Blick auf letsencrypt.org für kostenlose und vertrauenswürdige Zertifikate werfen, mit Mitwirkenden wie Chrome und Facebook sieht es ziemlich gut aus
Tom


1
Ich wusste nichts davon. Ich denke jedoch, dass sie zu Recht dies nicht zulassen. Könnten Sie lieber Aliase in einer anderen Domäne erstellen (z. B. über Route53) und nicht den angegebenen Standardnamen für aws dns verwenden?
Tom

Ich bin erst kürzlich auf ein Video gestoßen [April - 2020], in dem sie mit AWS Certificate Manager ein SSL \ TLS-Zertifikat erstellen und es dann hinter einem Load Balancer auf eine EC2-Instanz stellen. youtu.be/bWPTq8z1vFY Es war wirklich hilfreich.
Nktsamba

Antworten:


106

F: Kann ich Zertifikate auf Amazon EC2-Instanzen oder auf meinen eigenen Servern verwenden?

Nein. Derzeit können von ACM bereitgestellte Zertifikate nur mit bestimmten AWS-Diensten verwendet werden.


F: Mit welchen AWS-Diensten kann ich von ACM bereitgestellte Zertifikate verwenden?

Sie können ACM mit den folgenden AWS-Diensten verwenden:

• Elastischer Lastausgleich

• Amazon CloudFront

• AWS Elastic Beanstalk

• Amazon API Gateway

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

Sie können die von Amazon Certificate Manager (ACM) erstellten Zertifikate nicht auf Ressourcen installieren, auf die Sie direkten Zugriff auf niedriger Ebene haben, z. B. EC2 oder Server außerhalb von AWS, da Sie keinen Zugriff auf die privaten Schlüssel erhalten. Diese Zertifikate können nur auf Ressourcen bereitgestellt werden, die von der AWS-Infrastruktur verwaltet werden - ELB und CloudFront -, da die AWS-Infrastruktur die einzigen Kopien der privaten Schlüssel für die von ihr generierten Zertifikate enthält und diese mit überprüfbaren internen Zugriffskontrollen streng überwacht .

Sie müssten Ihre EC2-Maschinen hinter CloudFront oder ELB abhören lassen (oder beide, kaskadiert, würden auch funktionieren), um diese Zertifikate für Inhalte zu verwenden, die von EC2 stammen ... da Sie diese Zertifikate nicht direkt auf EC2-Maschinen installieren können .


10
Die gute Nachricht ist, dass es keine Gebühr gibt, wenn Sie ein Zertifikat ausgestellt und hier herausgefunden haben, dass Sie es nicht installieren können.
Kraftydevil

1
lol @kraftydevil Ich denke du hast da einen Punkt. Beachten Sie, dass letsencrypt.org eine legitime, anerkannte, gemeinnützige Quelle für kostenlose SSL-Zertifikate ist, die Sie überall installieren können, wo Sie möchten. (Und ich könnte hinzufügen, ich habe keine Zugehörigkeit zu Let's Encrypt.)
Michael - sqlbot

6
@EngineerDollery nein, das gilt nur für einen bestimmten Fall. Sie können Let's Encrypt auf EC2 unbedingt verwenden. Was Sie nicht tun können, ist ein Let's Encrypt-Zertifikat für einen EC2- *.amazonaws.comHostnamen zu erhalten, da die Let's Encrypt-Richtlinie dies vernünftigerweise nicht zulässt. Für eine Domäne, die Sie steuern und die auf eine EC2-Instanz-IP, ELB oder CloudFront verweist, Sie können Let's Encrypt auf jeden Fall verwenden, genau wie überall sonst.
Michael - sqlbot

2
Link zu einem Beispiel mit einem automatisierten Verschlüsselungszertifikat, das auf EC2 bereitgestellt wird: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Efren

Ich folgte mit dem ELB-Setup alles, jetzt bekomme ich 502 Bad Gateway, als ich einen Rekord auf die ELB zeigte
MuaathAli

2

Nein, Sie können den aws-Zertifikatmanager nicht zum Bereitstellen von Zertifikaten auf EC2 verwenden. Die Zertifikate des Zertifikatmanagers können nur für Cloudfront und Elastic Load Balancer bereitgestellt werden. Um es auf ec2 zu verwenden, müssen Sie elb auf ec2 setzen, damit die Anforderung vom Client an den Load Balancer https-geschützt ist und von elb an den ec2-Webserver auf http.


1

Wenn Sie AWS ACM Cert nur für interne Zwecke verwenden, können Sie wahrscheinlich AWS ACM Private CA verwenden, um die Zertifikate auszustellen (ich denke, Sie können es auch für öffentliche / externe Datenverkehrszwecke verwenden, wenn Ihre Stammzertifizierungsstelle eine öffentlich vertrauenswürdige Zertifizierungsstelle ist).

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

Legen Sie während des Starts von Application / EC2 / Container einen Schritt fest, um Ihren von ACM Private CA ausgestellten Cert / Private Key an Ihr Ziel zu exportieren und diesen für die Bereitstellung des Datenverkehrs zu verwenden.

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

Eine gute Sache ist, dass Sie mithilfe der IAM-Rolle steuern können, wer die Exportzertifizierungsfunktion aufrufen kann, sodass nicht jeder den privaten Schlüssel des Zertifikats herunterladen kann.

Ein Nachteil dabei ist, dass private Zertifizierungsstellen ein teurer AWS-Service sind (400 USD / Monat). https://aws.amazon.com/certificate-manager/pricing/


Sie können das Exportzertifikat nicht mit ACM PCA verwenden - aber Sie brauchen es auch nicht: Sie haben bereits den privaten Schlüssel, und get-certificate gibt das Zertifikat und die Kette an.
Freier Willaert

@FreeWillaert Ich bin mir ziemlich sicher, dass Sie mit get-certificate keinen Private Key-Teil erhalten. Überprüfen Sie diese CLI- Dokumentation . und das . Überprüfen Sie beide Ausgänge der CLI-Antworten. Ich habe diese CLI-Befehle bereits getestet.
Imran

@ FreeWillaert yep :). Der oben genannte CLI-Befehl kann im Docker-Startskript oder im EC2-Benutzerdatenskript verwendet werden, um das Zertifikat für private Schlüssel zur Laufzeit herunterzuladen und für die Bereitstellung des TLS-Datenverkehrs zu verwenden. Speziell in ASG. Der gute Teil ist, dass Sie mithilfe von IAM-Rollen steuern können, wer den obigen CLI-Befehl aufrufen kann, sodass nicht jeder Zugriff auf private Schlüssel hat.
Imran

1
@Imran du solltest fett One downside with this is, private CA is expensive AWS service($400/month).oben schreiben, zum Beispiel würde ich es vermissen, wenn ich diese Antwort nicht zum zweiten Mal lesen würde
Piekarski D

@PiekarskiD fertig. Danke für den Vorschlag!!. Wenn dir meine Antwort gefällt, kannst du immer upvoten !!
Imran

0

Wenn Sie die obigen Kommentare hinzufügen, können Sie den AWS Certificate Manager nicht dafür verwenden, aber Sie können ec2 auf einem Windows-Server mit IIS ein Let's Encrypt-Zertifikat hinzufügen, und das ist ganz einfach:

  1. Verknüpfen Sie eine elastische IP mit Ihrer ec2-Instanz.

  2. Stellen Sie sicher, dass Sie eine registrierte Domain haben. Sie können die mit Ihrer Instanz gelieferten Typnamen ec2----------.us-east-1.compute.amazonaws.com nicht verwenden.

  3. Lassen Sie Ihre Domain über die DNS-Einstellungen Ihres Domain-Providers auf Ihre elastische IP verweisen.

  4. Stellen Sie eine Verbindung zu Ihrer ec2-Instanz her und fügen Sie Ihren Domainnamen zu den Site-Bindungen hinzu.

  5. Gehen Sie zu https://github.com/PKISharp/win-acme/releases

  6. Schauen Sie unter Assets nach und verwenden Sie die neueste Version (z. B. win-acme.v2.0.10.444.zip). Dies ist der einzige Assets-Ordner, den Sie benötigen.

  7. Entpacken Sie den Ordner, öffnen Sie das Terminal als Administrator und legen Sie die CD in den entpackten Ordner.

  8. Führen Sie wacs.exe aus und befolgen Sie die Anweisungen.

  9. Stellen Sie sicher, dass die Ihrer Instanz zugewiesene Sicherheitsgruppe Datenverkehr (mindestens Ihre eigene IP) über den in IIS ausgewählten HTTPS-Port zulässt. Dies ist standardmäßig Port 443.

Ich fand die folgenden Links hilfreich, als ich das herausfand. Hier ist ein Video mit einer früheren Version, wenn Sie weitere Hilfe benötigen, aber es ist die gleiche Idee.

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

Auch dieser Artikel könnte hilfreich sein:

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.