So konfigurieren Sie SSL für den Amazon S3-Bucket

Antworten:

151

Sie können über SSL wie folgt auf Ihre Dateien zugreifen:

https://s3.amazonaws.com/bucket_name/images/logo.gif

Wenn Sie eine benutzerdefinierte Domain für Ihren Bucket verwenden, können Sie S3 und CloudFront zusammen mit Ihrem eigenen SSL-Zertifikat verwenden (oder ein kostenloses über Amazon Certificate Manager generieren): http://aws.amazon.com/cloudfront/custom-ssl- Domains /

Reach4thelasers
quelle
42
Das stimmt nicht ganz. Sie können Bucket-Namen ohne Punkte verwenden: this-is-my-awesome-bucket.s3.amazonaws.com Amazon verfügt über ein Platzhalterzertifikat. Da Sie keine Punkte verwenden können, kann keine CNAME-Domain auf Ihren Bucket verweisen.
Docunext
4
Achten Sie auf Eimernamen mit Punkten! Das SSL funktioniert nicht auf iOS-Geräten, funktioniert aber in Chrome einwandfrei. Siehe stackoverflow.com/questions/3048236/…
Simon_Weaver
1
Amazon CloudFront erledigt dies für Sie.
Greg
3
Stellen Sie sicher, dass der Hostname mit der Region übereinstimmt, um Bucket-Namen für die Punktnotation zu erhalten (damit Sie den Route 53-Alias ​​verwenden können) und Objekte über REST einfügen möchten. Zum Beispiel ist mein Bucket in, us-west-2so dass der Hostname tatsächlich ist, s3-us-west-2.amazonaws.comsonst erhalten Sie eine Fehlermeldung.
Noetix
1
Können wir dies ohne Cloudfront erreichen?
Arun Kumar
28

Benutzerdefinierte Domain-SSL-Zertifikate wurden heute für 600 USD / Zertifikat / Monat hinzugefügt. Melden Sie sich unten für Ihre Einladung an: http://aws.amazon.com/cloudfront/custom-ssl-domains/

Update : Vom SNI-Kunden bereitgestellte Zertifikate sind jetzt verfügbar ohne zusätzliche Kosten erhältlich. Viel billiger als 600 US-Dollar pro Monat, und da XP fast abgeschaltet ist, sollte es für die meisten Anwendungsfälle gut funktionieren.

@skalee AWS verfügt über einen Mechanismus, mit dem erreicht werden kann, was das Poster verlangt: "Implementieren von SSL für einen Amazon S3-Bucket" CloudFront. Ich lese "implementieren" als "benutze meine SSL-Zertifikate" und setze nicht einfach ein S in die HTTP-URL, was das OP sicher vermutet haben könnte.

Da CloudFront genau so viel kostet wie S3 (0,12 US-Dollar / GB), aber eine Menge zusätzlicher Funktionen rund um SSL bietet UND Sie Ihr eigenes SNI-Zertifikat ohne zusätzliche Kosten hinzufügen können, ist dies die offensichtliche Lösung für die "Implementierung von SSL" in Ihrer Domain.

Joseph Lust
quelle
64
CloudFront ist nicht S3.
Skalee
6
@skalee Richtig, aber wenn Sie über eine Domäne mit benutzerdefinierten SSL-Zertifikaten darauf zugreifen möchten, können Sie auf diese Weise benutzerdefinierte CNAME-SSL-Zertifikate einrichten und über CF darauf zugreifen.
Joseph Lust
2
Zur Zeit habe ich zwei CNAMEs eingerichtet: static-s3 und static-cf, wobei der erste direkt auf meinen S3 und der zweite auf CF zeigt. Erstens kann SSL nicht unterstützt werden, zweitens, aber es ist CF und nicht S3, wie Skalee betont. Das ist das Beste, was wir ab sofort tun können.
Gefahr
2
WOW Ich denke, sie müssen die immer günstigeren Lagerkosten irgendwie ausgleichen. Zumindest ist es anteilig. Wenn Sie Ihr SSL-Zertifikat nur 1 Stunde im Monat verwenden, sind es nur 20 US-Dollar
;-)
1
@ Elegant.Scripting Wenn Sie über ein dediziertes SSL-Zertifikat (kein SNI-Zertifikat) verfügen, benötigt dieser Computer eine dedizierte IP, die Kosten verursacht. Vermutlich wird für jeden Standort auf der Welt, an dem S3 Ihre Daten hostet, eine dedizierte IP-Adresse benötigt. Das summiert sich also. Aber ich denke, es ist hauptsächlich so, dass Post-Leute es nicht brauchen und sie können den Preis für diejenigen erhöhen, die es tun. Wenn Sie IE6 nicht unterstützen müssen, sollten Sie mit dem SNI-Zertifikat unter CloudFront einverstanden sein.
Simon_Weaver
11

Ich habe festgestellt, dass Sie dies einfach über den Cloud Flare-Dienst tun können.

Richten Sie einen Bucket ein, aktivieren Sie das Webhosting auf dem Bucket und zeigen Sie den gewünschten CNAME über Cloudflare auf diesen Endpunkt ... und zahlen Sie natürlich für den Service ... aber 5 bis 20 US-Dollar gegenüber 600 US-Dollar sind viel einfacher zu ertragen.

Ausführliche Informationen finden Sie hier: https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/

Ralph Vugts
quelle
1
Versuchen Sie meinen Führer hier: engagieren.io/…
Ralph Vugts
3

Wenn Sie es wirklich brauchen, ziehen Sie Umleitungen in Betracht.

Auf Anfrage können assets.my-domain.example.com/path/to/fileSie beispielsweise eine 301- oder 302-Umleitung zu my-bucket-name.s3.amazonaws.com/path/to/fileoder durchführen s3.amazonaws.com/my-bucket-name/path/to/file(bitte denken Sie daran, dass im ersten Fall my-bucket-namekeine Punkte enthalten sein können, da sie sonst nicht mit den *.s3.amazonaws.com, s3.amazonaws.comAngaben im S3-Zertifikat übereinstimmen ).

Nicht getestet, aber ich glaube, es würde funktionieren. Ich sehe jedoch nur wenige Fallstricke.

Die erste ist ziemlich offensichtlich, eine zusätzliche Anfrage, um diese Umleitung zu erhalten. Und ich bezweifle, dass Sie den von Ihrem Domainnamen-Registrar bereitgestellten Umleitungsserver verwenden könnten - Sie müssten dort irgendwie das richtige Zertifikat hochladen -, also müssen Sie dafür Ihren eigenen Server verwenden.

Die zweite ist, dass Sie URLs mit Ihrem Domain-Namen im Seitenquellcode haben können. Wenn der Benutzer beispielsweise das Bild in einer separaten Registerkarte öffnet, wird in der Adressleiste die Ziel-URL angezeigt.

Skalee
quelle
2
Ich bin nicht sicher, aber ich denke, dies könnte CORS-Probleme verursachen.
xdhmoore
3

Es ist nicht direkt mit S3 möglich, aber Sie können eine Cloud Front-Distribution aus Ihrem Bucket erstellen. Gehen Sie dann zum Zertifikatmanager und fordern Sie ein Zertifikat an. Amazon gibt sie kostenlos. Wenn Sie die Zertifizierung erfolgreich bestätigt haben, weisen Sie sie Ihrer Cloud Front-Distribution zu. Denken Sie auch daran, die Regel so festzulegen, dass http auf https umgeleitet wird.

Ich hoste einige statische Websites auf Amazon S3, z. B. meine persönliche Website, der ich das SSL-Zertifikat zugewiesen habe, da sie über die Cloud Front-Distribution verfügen.

Mika Kujapelto
quelle
und wie haben Sie den Domainnamen vergeben?
Netshark1000
Gehen Sie zuerst zum Zertifikatmanager und fordern Sie ein neues Zertifikat an. Fügen Sie dort Ihre Domain hinzu und fügen Sie dort bei Bedarf auch Subdomains hinzu. Es tut nicht wirklich weh, Subdomains dort zu platzieren. Sie können also auch example.com und * .example.com dort platzieren.
Mika Kujapelto
0

Wie bereits erwähnt, können Sie keine kostenlosen Zertifikate für S3-Buckets erstellen. Sie können jedoch eine Cloud Front-Verteilung erstellen und stattdessen das Zertifikat für die Cloud Front zuweisen. Sie fordern das Zertifikat für Ihre Domain an und weisen es dann in den Cloud Front-Einstellungen der Cloud Front-Distribution zu. Ich habe diese Methode verwendet, um statische Websites über SSL sowie statische Dateien bereitzustellen.

Für die statische Website-Erstellung ist Amazon der richtige Ort. Es ist wirklich erschwinglich, eine statische Website mit SSL zu erhalten.

Mika Kujapelto
quelle
2
Für alle, die mit Google hierher kommen: Denken Sie daran, Ihr AWS-Zertifikat (auch) in der Region N. Virginia zu erstellen. Andernfalls können Sie es nicht in Ihrer CF-Distribution auswählen
KLoozen