HTTPS-Setup in Amazon EC2


101

Wie aktivieren wir HTTPS in Amazon EC2? Unsere Seite arbeitet an HTTP.


Gute Frage, aber ich habe die Sicherheitsgruppe festgelegt und es passiert kein Zauber
Shark Deng

Antworten:


76

Zunächst müssen Sie den HTTPS-Port (443) öffnen. Gehen Sie dazu zu https://console.aws.amazon.com/ec2/, klicken Sie auf den Security GroupsLink links und erstellen Sie eine neue Sicherheitsgruppe, für die auch HTTPS verfügbar ist. Aktualisieren Sie dann einfach die Sicherheitsgruppe einer laufenden Instanz oder erstellen Sie mit dieser Gruppe eine neue Instanz.

Nach diesen Schritten ist Ihre EC2-Arbeit abgeschlossen und es handelt sich um ein Anwendungsproblem.


15
Ich konnte der von der Instanz verwendeten Sicherheitsgruppe eine neue Regel für Port 443 hinzufügen, die gerade funktioniert hat, ohne sie neu zu starten.
Dmitry Efimenko

9
you can't change a security group of a running instance, even rebooting- Ich denke, diese Einschränkung wurde aufgehoben, seit diese Antwort veröffentlicht wurde.
Yuriy Nakonechnyy

11
Sie müssen die Sicherheitsgruppe nicht ändern, Sie könnenEdit inbound rules
Khoi

8
@ nikhil84 Durch Hinzufügen von HTTPS in der Sicherheitsgruppe haben Sie nur Port 443 auf dem Computer geöffnet. Dies ist Schritt 1. Zweitens müssen Sie Ihren Server auf diesem Computer so einrichten, dass er den 443-Port (anstelle des Standard-HTTP-Ports 80) überwacht und HTTPS-Verkehr akzeptiert. Welchen Server benutzt du?
Yuriy Nakonechnyy

4
@ nikhil84 Bitte folgen Sie den hier aufgeführten Richtlinien: digitalocean.com/community/tutorials/…, um https auf Apache HTTPD einzurichten
Yuriy Nakonechnyy

40

Diese Antwort richtet sich an Personen, die eine Domain auf einer anderen Website (als GoDaddy) kaufen und das kostenlose Amazon-Zertifikat mit Certificate Manager verwenden möchten

Diese Antwort verwendet Amazon Classic Load Balancer (kostenpflichtig). Sehen Sie sich die Preise an, bevor Sie es verwenden


Schritt 1 - Fordern Sie ein Zertifikat bei Certificate Manager an

Gehen Sie zu Zertifikatmanager> Zertifikat anfordern> Öffentliches Zertifikat anfordern

Auf Domain Name wird addieren Sie myprojectdomainname.comund *.myprojectdomainname.comund gehen Sie auf Weiter

Wählen Sie E-Mail-Validierung und Bestätigen und Anfordern

Öffnen Sie die E-Mail, die Sie erhalten haben (in dem E-Mail-Konto, in dem Sie die Domain gekauft haben), und bestätigen Sie die Anfrage

Überprüfen Sie anschließend, ob der Validierungsstatus von myprojectdomainname.comund erfolgreich *.myprojectdomainname.comist. Wenn dies erfolgreich ist, können Sie mit Schritt 2 fortfahren

Schritt 2 - Erstellen Sie eine Sicherheitsgruppe für einen Load Balancer

Gehen Sie in EC2 zu Sicherheitsgruppen> und erstellen Sie eine Sicherheitsgruppe und fügen Sie die eingehenden http und https hinzu

Es wird so etwas sein wie: Geben Sie hier die Bildbeschreibung ein

Schritt 3 - Erstellen Sie den Load Balancer

EC2> Load Balancer> Load Balancer erstellen> Klassischer Load Balancer (dritte Option)

Erstellen Sie LB im Inneren - der vpc Ihres Projekts Fügen Sie beim Load Balancer-Protokoll Http und Https hinzu Geben Sie hier die Bildbeschreibung ein

Weiter> Wählen Sie die Sicherheitsgruppe beenden

Wählen Sie die Sicherheitsgruppe aus, die Sie im vorherigen Schritt erstellt haben

Weiter> Zertifikat von ACM auswählen

Wählen Sie das Zertifikat von Schritt 1 aus

Weiter>

Beim Health Check habe ich den Ping-Pfad / verwendet (ein Schrägstrich anstelle von /index.html).

Schritt 4 - Ordnen Sie Ihre Instanz der Sicherheitsgruppe des Load Balancers zu

EC2> Instanzen> Klicken Sie auf Ihr Projekt> Aktionen> Netzwerk> Sicherheitsgruppen ändern

Fügen Sie die Sicherheitsgruppe Ihres Load Balancers hinzu

Schritt 5

EC2> Load Balancer> Klicken Sie auf den von Ihnen erstellten Load Balancer.> Kopieren Sie den DNS-Namen (A Record) myproject-2021611191.us-east-1.elb.amazonaws.com

Gehen Sie zu Route 53> Routenzonen> klicken Sie auf den Domainnamen> Gehen Sie zu Datensatzgruppen (Wenn Sie Ihre Domain hier nicht haben, erstellen Sie eine gehostete Zone mit Domain Name: myprojectdomainname.comund Type: Public Hosted Zone)

Überprüfen Sie, ob Sie einen Datensatztyp A haben (wahrscheinlich nicht), erstellen / bearbeiten Sie einen Datensatz mit leerem Namen, geben Sie A, Alias ​​Ja ein und zielen Sie auf die von Ihnen kopierten DNS ab

Erstellen Sie auch einen neuen Datensatz vom Typ A , Name *.myprojectdomainname.com, Alias ​​Ja und Ziel Ihrer Domain (myprojectdomainname.com). Dies ermöglicht den Zugriff auf Ihre Site mit www.myprojectdomainname.com und subsite.myprojectdomainname.com. Hinweis: Dazu müssen Sie Ihren Reverse-Proxy (Nginx / Apache) konfigurieren.

Beim NS-Kopieren der 4 Nameserver-Werte, die im nächsten Schritt verwendet werden sollen, sieht es ungefähr so ​​aus:

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

Gehen Sie zu EC2> Instanzen> und kopieren Sie auch die öffentliche IPv4-IP

Schritt 6

Auf der Domain-Registrierungsseite, dass Sie die Domain gekauft haben (in meinem Fall GoDaddy)

Ändern Sie das Routing in http : <Your IPv4 Public IP Number>und wählen Sie Mit Maskierung weiterleiten

Ändern Sie die Nameserver (NS) in die 4 NS, die Sie kopiert haben. Dies kann 48 Stunden dauern


Muss ich einen Load Balancer verwenden, wenn ich https möchte?
Curtis

Ich habe das alles getan, aber ich bekomme ERR_CONNECTION_TIMED_OUT, wenn ich meine Domain in einem Browser getroffen habe
Curtis

1
Ich musste einen Load Balancer mit einer neuen Zielgruppe an Port 80 erstellen und dann die Listener bearbeiten, um Port 80 zu verwenden. Funktioniert jetzt. Vielen Dank.
Curtis

1
@Curtis Load Balancer ist nicht die einzige Option zur Verwendung von https. Sie können auch "
Lets

@DigaoParceiro Was haben Sie mit Schritt 5 gemacht? DNS-Name kopiert?
Prashant

9

Amazon EC2-Instanzen sind nur virtuelle Maschinen. Sie würden SSL also genauso einrichten, wie Sie es auf jedem Server einrichten würden.

Sie erwähnen nicht, auf welcher Plattform Sie sich befinden, daher ist es schwierig, weitere Informationen zu geben.


Hallo, ich verwende eine T2.Micro Amazon Linux EC2-Instanz. Ich benutze node.js, um den Server zu stützen. Ich höre Port 443 in meinem Serverskript ab und meine Sicherheitsgruppe ist für Port 443 konfiguriert. Was muss ich noch tun, um HTTPS zu aktivieren? Ich brauche ein Zertifikat, oder? Probleme beim Auffinden anständiger Informationen, die NICHT auf Elastic Beanstalk basieren.
Stephen Tetreault

2
@SMT - Schauen Sie sich letsencrypt.org an, um kostenlose und sich automatisch erneuernde Zertifikate zu erhalten. Es gibt viele Informationen (über Google), wie man es mit Node einrichtet. Es gibt nichts anderes AWS / EC2-spezifisches, das Sie tun müssen.
Geoff Appleford

2
Danke für die Antwort! Ich habe es neulich tatsächlich zum Laufen gebracht und einige Schritte optimiert. Wenn jemand dies aus der Zukunft liest: github.com/MSCHF/aws-ec2-node-npm-setup
Stephen Tetreault

5

Eine alte Frage, aber es lohnt sich, eine andere Option in den Antworten zu erwähnen. Falls das DNS-System Ihrer Domain in Amazon Route 53 definiert wurde, können Sie den Amazon CloudFront-Dienst vor Ihrem EC2 verwenden und ein kostenloses Amazon SSL-Zertifikat anhängen. Auf diese Weise profitieren Sie sowohl von einem CDN für eine schnellere Bereitstellung von Inhalten als auch von der Sicherung Ihrer Domain mit dem HTTPS-Protokoll.


Gibt es eine Referenz oder einen Blog, in dem Schritte erwähnt werden, um dies zu erreichen?
Saurabh Yadav

In diesem Video erhält atiqur rahman ein SSL-Zertifikat mit dem Amazon Certificate Manager und konfiguriert dann die Cloud-Front mit der EC2-Instanz. Nach der Konfiguration wird http / 2 automatisch aktiviert.
Sachithra Dilshan


2

Verwenden Sie Elastic Load Balacing . Es unterstützt die SSL-Beendigung am Load Balancer, einschließlich des Auslagerns der SSL-Entschlüsselung von Anwendungsinstanzen und der zentralen Verwaltung von SSL-Zertifikaten.


15
Sie verwenden ELB nicht nur, um SSL bereitzustellen, das ist eigentlich eine irreführende Antwort. Ihr Server muss unabhängig davon SSL bereitstellen. Das Hinzufügen eines Load Balancers ist also nur ein zusätzlicher Kostenfaktor, wenn Sie ihn nicht benötigen. Es ist auch eine SSL-Beendigung in der Software, sodass das SSL zwischen dem Load Balancer und den Servern ein zusätzlicher Schritt ist, der sich auf die Leistung auswirkt.
Thomas die Lokomotive

1
Ich stimme Ihrem Kommentar zu. Dies erhöht die Kosten und beeinträchtigt die Leistung. Wir kennen ihre genauen Anforderungen in Bezug auf die Auslastung ihrer Server nicht, daher ist dies möglicherweise noch ein guter Weg. Aber ich verstehe Ihre Bemerkung "Ihr Server muss unabhängig davon SSL bereitstellen" nicht. Warum wird dies benötigt? Der Load Balancer umfasst auch das Auslagern von SSL. Vielen Dank.
Peter Hulsen

2
Ja stimmt. Sie können dies verwenden, um das SSL auf einfache Weise bereitzustellen. Ich denke nur, dass die Instanzen immer noch öffentliche DNS-Werte haben, auf die Benutzer aus irgendeinem Grund direkt zugreifen können. In diesem Fall möchten Sie möglicherweise die Verwendung von SSL erzwingen.
Thomas die Lokomotive

Ich weiß, dass dieser Kommentar zu spät ist, aber wenn Sie nach meinem Verständnis einen registrierten Domainnamen verwenden möchten, müssen Sie ELB verwenden, da die EC2-IP als "nicht permanent" eingestuft wird und daher Ihr SSL-Zertifikat nicht verwenden kann. Auf der anderen Seite, wenn Sie nur das von Amazon bereitgestellte DNS verwenden, dann benötigt es möglicherweise keine ELB, habe ich nicht überprüft.
Hexicle


0

Eine der besten Ressourcen, die ich gefunden habe, war die Verwendung von Let's Encrypt. Sie benötigen weder ELB noch Cloudfront, damit Ihre EC2-Instanz über HTTPS verfügt. Befolgen Sie einfach die folgenden einfachen Anweisungen: Verschlüsseln Sie die Anmeldung bei Ihrem Server und befolgen Sie die Schritte im Link.

Wie von anderen erwähnt, ist es auch wichtig, dass Sie Port 443 durch Bearbeiten Ihrer Sicherheitsgruppen geöffnet haben

Sie können Ihr Zertifikat oder eine andere Website anzeigen, indem Sie den Site-Namen in diesem Link ändern

Bitte vergessen Sie nicht, dass es nur 90 Tage gültig ist

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.