Statische HTTPS für Amazon S3-Website [geschlossen]

90

Ich möchte eine statische HTTPS-Website mit Amazon S3 und CloudFront hosten. Folgendes habe ich bisher getan:

  1. Richten Sie einen S3-Bucket für statisches Website-Hosting ein und legen Sie meine Website-Dateien darin ab
  2. Erstellt eine CloudFront-Distribution und verweist sie auf den S3-Bucket
  3. In den Nameservern meiner Domain wurde ein CNAME-Eintrag für die wwwSubdomain hinzugefügt, die auf den CloudFront-Bucket verweist.

So weit, so gut - ich kann über die www.example.comAdresse auf meine Website zugreifen . Ich möchte jedoch, dass die Site nur über HTTPS verfügbar ist, für das ich ein SSL-Zertifikat von GoDaddy gekauft habe.

Die Frage ist nun:

  1. Gibt es eine Möglichkeit, dieses SSL-Zertifikat eines Drittanbieters auf meiner von S3 gehosteten Website zu installieren?
  2. Gibt es eine Möglichkeit, mit diesem Setup eine automatische Umleitung von http zu https zu erreichen?
Jamix
quelle
1
Kann ich das kostenlos machen?
Piyush S. Wanare
Sie können ein SSL-Zertifikat kostenlos von Amazon erhalten und es wird automatisch erneuert. aws.amazon.com/certificate-manager Scrollen Sie nach unten zum Dollarzeichen-Symbol
Costa
1
Ich stimme dafür, diese Frage als nicht zum Thema gehörend zu schließen, da sie sich nicht mit Programmierung befasst
Zach Saucier
1
Warum nicht die Frage nach ServerFault verschieben?
Nu Everest
@nueverest Weil es zu alt ist, um zu migrieren.
gre_gor

Antworten:

63

Ja, ab heute können Sie dies kostenlos tun.

Sie können HTTPS jetzt mit CNAMEs in CloudFront verwenden, da es jetzt benutzerdefinierte SSL-Zertifikate mithilfe der SNI (Server Name Indication) unterstützt: http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and- http-redirection-for-amazon-cloudfront.html

Ich habe es geschafft, ein kostenloses StartSSL-Zertifikat der Klasse 1 für meine verteilte statische CloudFront-Site unter S3 ohne allzu große Probleme einzurichten (siehe: CloudFront-Fehler beim Bereitstellen über HTTPS mit SNI ).

Wikichen
quelle
7
Detaillierte Anleitung: bryce.fisher-fleig.org/blog/…
elado
3
Feedback: Bryce Fisher's Guide war sehr gut.
Tresf
6
Hier gibt es eine Subtilität. Sie können HTTPS für einen S3-Bucket verwenden, wenn dieser nicht für das Hosting von Websites konfiguriert ist . Siehe den Hinweis "Die Website-Endpunkte unterstützen kein https."
Skeller88
6
OK, um "Subtilität" zu überwinden und in einfachem Englisch zu beschreiben, hier ist mein Schuss darauf. Ein S3-Bucket mit statischem Webseiteninhalt (HTML) kann mit wenigen Klicks in eine Website umgewandelt werden. Diese Website kann nur http verwenden. Wenn Sie https möchten, müssen Sie den Cloudfront-Dienst von AWS verwenden und ihn für SNI konfigurieren, um https kostenlos zu erhalten. (Einige sehr alte oder ungerade Browser unterstützen SNI nicht.) HTML und andere Ressourcen können kostengünstig in S3 gespeichert werden. Wenn Sie den Domainnamen von AWS erhalten, müssen Sie außerdem den Elastic Load Balance-Service verwenden. Die Gebühren betragen einige Cent pro Gig.
Mike_Laird
5
Ich finde es erstaunlich, dass diese Antwort die richtige Antwort erhalten hat, wenn sie die Frage einfach nicht beantwortet: Wie von @ skeller88 angegeben, funktioniert s3 https nicht für das Hosting von Websites.
Abbood
36

Am 21.01.2016 hat AWS den AWS Certificate Manager gestartet , einen kostenlosen Dienst, mit dem Sie ein SSL-Zertifikat ausstellen können, das mit Elastic Load Balancer und Cloud Front (zusammen mit S3) verwendet werden kann.

Weitere Informationen erhalten Sie unter: https://aws.amazon.com/certificate-manager/

Unter https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on können Sie überprüfen, wie Sie Ihre S3 + Cloudfront-Website mit kostenlosem SSL von AWS bereitstellen -aws /

Barbolo
quelle
1
Ich habe das heute Morgen für meine Site eingerichtet. Es ist eine statische Site, die in s3 gehostet wird. Es war super einfach. Ich ging einfach zum acm-Manager, forderte ein Zertifikat an, stöberte einige Stunden lang mit meinen E-Mail-Einstellungen herum (machte schließlich meine WHOIS-Informationen öffentlich, während ich auf die Bestätigungs-E-Mail wartete) und richtete route53 so ein, dass es auf den Cloudfront-Endpunkt zeigte . Sehr glücklich, dass ich diesen Kommentar gefunden habe.
paranoid
1
@paranoid Kann ich damit meine s3-Website nur als https hosten?
Piyush S. Wanare
1
@ PiyushS.Wanare ja, du kannst!
Barbolo
Fügen Sie den HTTPS-Link in den CNAME-Datensatz in Route53 ein.
Costa
@paranoid nicht sicher, was Sie unter "Cloudfront-Endpunkt" verstehen. Woher bekomme ich diese Informationen?
Abbood
17

Ab heute bietet Cloudfront benutzerdefiniertes SSL an: http://aws.amazon.com/cloudfront/pricing/

Denken Sie daran, sie berechnen 600 $ / Monat. Weitere Details unter dem obigen Link.

Christian Fazzini
quelle
7
600 / Monat ......
Pacerier
11
Sie zahlen nur 600 US-Dollar, wenn Sie eine dedizierte IP-Adresse wünschen. Wenn Sie gerne SNI verwenden (das von älteren Browsern nicht unterstützt wird), fallen keine zusätzlichen Gebühren an
Martin OConnor
2
Wenn Sie bereit sind, nur moderne Browser (über SNI) zu unterstützen, ist dies jetzt viel billiger: aws.amazon.com/about-aws/whats-new/2014/03/05/…
Andrew Newdigate
Dies ist jetzt KOSTENLOS! aws.amazon.com/certificate-manager Scrollen Sie nach unten zum Dollarzeichen-Symbol. Außerdem denke ich, dass sie sich automatisch erneuern. Die Einrichtung ist so einfach wie das Eingeben der gewünschten Domänen in das Zertifikat und das Klicken auf den Validierungslink in der folgenden E-Mail.
Costa
3

Für mich musste ich eine einfache React-Website auf S3 hochladen. Wie von barbolo beschrieben, benötigen Sie ein Zertifikat, um über SSL auf die Site zugreifen zu können. Wenn die statische Site, die Sie bereitstellen möchten, einfach genug ist, können Sie:

  1. Auf S3 hochladen.
  2. Wählen Sie nicht "Static Website Hosting".
  3. Konvertieren Sie alle relativen Links (in CSS, JS usw.) in absolute Links.

zB von /css/media.css sollten Sie es in https://s3-region-amazonaws.com/bucket-name/css/media.css konvertieren (für mich musste ich nur Links in index.html ändern)

  1. Machen Sie nur den Inhalt des Buckets öffentlich.

Das ist es. Sie können über https auf die Indexdatei zugreifen.

Eine einfache Site ist eine Site mit einer Hauptdatei index.html, die auf einige CSS- und JS-Seiten verweist.

alexopoulos7
quelle
Genial. Danke
user1874634
Wenn Ihre App auf die Produktion abzielt, ist dies eine schlechte Idee.
Sébastien
sébastien bitte teilen Sie uns weitere Details mit, warum dies eine schlechte Idee ist. Wir gewähren öffentlichen Lesezugriff auf Objekte, die nicht im Bucket enthalten sind.
Alexopoulos7
Dies ist eine gute und einfachste Methode. Denken Sie jedoch daran, dass die Anforderung für jede einzelne Datei in Ihrer Anwendung im Internet übertragen wird, wodurch die Leistung Ihrer Anwendung beeinträchtigt wird. Die Verwendung von CloudFront ist in diesen Szenarien die beste Idee.
Nitesh B.
@ NiteshB.CloudFront ist Arsch-Schmerz, wenn Sie Ihre S3-Objekte häufig aktualisieren müssen
Dustin Sun
0

Neben der Antwort von @ wikichen.

Von: https://aws.amazon.com/cloudfront/custom-ssl-domains/

Standardmäßig können Sie Ihre Inhalte über HTTPS an Viewer senden, indem Sie Ihren CloudFront-Distributionsdomänennamen in Ihren URLs verwenden, z. B. https://dxxxxx.cloudfront.net/image.jpg .

Wenn Sie Ihre Inhalte über HTTPS mit Ihrem eigenen Domainnamen und Ihrem eigenen SSL-Zertifikat bereitstellen möchten, können Sie eine unserer Unterstützungsfunktionen für benutzerdefinierte SSL-Zertifikate verwenden.

Jason
quelle