Jak skonfigurować SSL dla zasobnika Amazon S3

Odpowiedzi:

151

Możesz uzyskać dostęp do swoich plików przez SSL w następujący sposób:

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

Jeśli używasz niestandardowej domeny dla swojego wiadra, możesz używać S3 i CloudFront razem z własnym certyfikatem SSL (lub wygenerować darmowy za pośrednictwem Amazon Certificate Manager): http://aws.amazon.com/cloudfront/custom-ssl- domeny /

reach4thelasers
źródło
42
To nie do końca prawda. Możesz używać nazw zasobników bez kropek: this-is-my-awesome-bucket.s3.amazonaws.com Amazon ma certyfikat wieloznaczny. Ponieważ nie możesz używać kropek, nie możesz mieć domeny CNAME wskazującej na Twój zasobnik.
Docunext
4
uważaj na nazwy wiader zawierające kropki! SSL nie będzie działał na urządzeniach z iOS, ale będzie działał dobrze w Chrome. Zobacz stackoverflow.com/questions/3048236/…
Simon_Weaver
1
Amazon CloudFront zrobi to za Ciebie.
Greg,
3
Aby mieć nazwy zasobników z notacją kropkową (aby można było użyć aliasu Route 53) i chcesz wstawić obiekty przez REST, upewnij się, że nazwa hosta jest zgodna z regionem. Na przykład moje wiadro jest w środkuus-west-2 więc nazwa hosta jest w rzeczywistości, w s3-us-west-2.amazonaws.comprzeciwnym razie pojawi się błąd.
noetix
1
bez chmury czy możemy to osiągnąć?
Arun Kumar
28

Certyfikaty SSL domeny niestandardowej zostały właśnie dodane dzisiaj za 600 USD / certyfikat / miesiąc. Zarejestruj się, aby otrzymać zaproszenie poniżej: http://aws.amazon.com/cloudfront/custom-ssl-domains/

Aktualizacja : certyfikaty dostarczone przez klienta SNI są teraz dostępne bez dodatkowych opłat. Znacznie tańsze niż 600 $ miesięcznie, a przy prawie zabitym XP, powinno dobrze działać w większości przypadków użycia.

@skalee AWS ma mechanizm umożliwiający osiągnięcie tego, o co prosi plakat, „zaimplementuj SSL dla zasobnika Amazon s3”, tak się nazywa CloudFront. Czytam „zaimplementuj” jako „użyj moich certyfikatów SSL”, a nie po prostu wstawiam literę S w adresie URL HTTP, o którym jestem pewien, że OP mógł się domyślić.

Ponieważ CloudFront kosztuje dokładnie tyle samo, co S3 (0,12 USD / GB), ale ma mnóstwo dodatkowych funkcji związanych z SSL ORAZ pozwala na dodanie własnego certyfikatu SNI bez dodatkowych kosztów, jest to oczywista poprawka do „implementacji SSL” w Twojej domenie.

Joseph Lust
źródło
64
CloudFront to nie S3.
skalee
6
@skalee Prawidłowo, ale jeśli chcesz uzyskać do niego dostęp za pośrednictwem domeny z niestandardowymi certyfikatami SSL, zgodnie z żądaniami OP, możesz skonfigurować niestandardowe certyfikaty CNAME SSL w ten sposób i uzyskać do nich dostęp przez CF.
Joseph Lust,
2
Na razie ustawiłem dwa CNAME: static-s3 i static-cf, z których pierwszy wskazuje bezpośrednio na mój S3, a drugi na CF. Pierwszy nie obsługuje SSL, drugi może, ale jest to CF, a nie S3, jak wskazuje skalee. Myślę, że to najlepsze, co możemy teraz zrobić.
Danger
2
WOW, chyba muszą jakoś nadrobić coraz tańsze koszty przechowywania. przynajmniej jest to proporcjonalne. jeśli używasz swojego certyfikatu SSL tylko przez 1 godzinę w miesiącu, to tylko 20 $ ;-)
Simon_Weaver
1
@ Elegant.Scripting, jeśli masz dedykowany certyfikat SSL (nie certyfikat SNI), to ta maszyna potrzebuje dedykowanego adresu IP, co wiąże się z kosztami. przypuszczalnie potrzebny jest dedykowany adres IP dla każdej lokalizacji na świecie, w której S3 przechowuje Twoje dane. Więc to się zgadza. Ale myślę, że głównie po prostu ludzie tego nie potrzebują i mogą podnieść cenę dla tych, którzy tego potrzebują. Jeśli nie potrzebujesz obsługi IE6, powinieneś być w porządku z certyfikatem SNI w CloudFront.
Simon_Weaver
11

Odkryłem, że możesz to łatwo zrobić za pośrednictwem usługi Cloud Flare.

Skonfiguruj zasobnik, włącz hosting w zasobniku i skieruj żądany CNAME do tego punktu końcowego przez Cloudflare ... i oczywiście zapłać za usługę ... ale 5- $ 20 VS 600 $ jest znacznie łatwiejszy do zniesienia.

Pełne szczegóły tutaj: https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/

Ralph Vugts
źródło
1
Spróbuj mojego przewodnika tutaj: engaging.io/...
Ralph Vugts
3

Jeśli naprawdę tego potrzebujesz, rozważ przekierowania.

Na przykład na żądanie assets.my-domain.example.com/path/to/filemożesz wykonać przekierowanie 301 lub 302 na my-bucket-name.s3.amazonaws.com/path/to/filelub s3.amazonaws.com/my-bucket-name/path/to/file(pamiętaj, że w pierwszym przypadku my-bucket-namenie może zawierać żadnych kropek, w przeciwnym razie nie będzie pasować*.s3.amazonaws.com, s3.amazonaws.com podanego w certyfikacie S3).

Nie testowane, ale wierzę, że to zadziała. Widzę jednak kilka pułapek.

Pierwsza jest dość oczywista, dodatkowa prośba o to przekierowanie. I wątpię, żebyś mógł skorzystać z serwera przekierowań dostarczonego przez twojego rejestratora nazw domen - musiałbyś jakoś przesłać tam odpowiedni certyfikat - więc musisz użyć do tego własnego serwera.

Po drugie, możesz mieć adresy URL z nazwą domeny w kodzie źródłowym strony, ale gdy na przykład użytkownik otworzy zdjęcie w osobnej karcie, pasek adresu wyświetli docelowy adres URL.

skalee
źródło
2
Nie jestem pewien, ale myślę, że może to spowodować problemy z CORS.
xdhmoore
3

Nie jest to możliwe bezpośrednio z S3, ale możesz utworzyć dystrybucję Cloud Front na podstawie swojego zasobnika. Następnie przejdź do menedżera certyfikatów i poproś o certyfikat. Amazon udostępnia je za darmo. Jeśli pomyślnie potwierdziłeś certyfikację, przypisz ją do swojej dystrybucji Cloud Front. Pamiętaj również, aby ustawić zasadę przekierowania http na https.

Hostuję kilka statycznych stron internetowych na Amazon S3, na przykład moją osobistą witrynę, do której przypisałem certyfikat SSL, ponieważ mają one dystrybucję Cloud Front.

Mika Kujapelto
źródło
i jak przypisałeś nazwę domeny?
netshark1000
Najpierw przejdź do menedżera certyfikatów i poproś o nowy certyfikat. Dodaj tam swoją domenę i w razie potrzeby uwzględnij tam również subdomeny. Umieszczanie tam subdomen tak naprawdę niczego nie szkodzi, więc równie dobrze można umieścić tam po prostu example.com i * .example.com.
Mika Kujapelto
0

Jak wspomniano wcześniej, nie można tworzyć bezpłatnych certyfikatów dla zasobników S3. Możesz jednak utworzyć dystrybucję Cloud Front, a następnie zamiast tego przypisać certyfikat do usługi Cloud Front. Żądasz certyfikatu dla swojej domeny, a następnie przypisujesz go do dystrybucji Cloud Front w ustawieniach Cloud Front. Użyłem tej metody do obsługi statycznych stron internetowych przez SSL, a także plików statycznych.

W przypadku tworzenia statycznych witryn internetowych Amazon jest idealnym miejscem. Uzyskanie statycznej strony internetowej z SSL jest naprawdę przystępne cenowo.

Mika Kujapelto
źródło
2
Dla każdego, kto trafia tutaj za pomocą google: pamiętaj, aby utworzyć certyfikat AWS (również) w regionie N. Virginia. W przeciwnym razie nie będziesz mógł go wybrać w swojej dystrybucji CF
KLoozen