HTTPS dla statycznej witryny Amazon S3 [zamknięte]

90

Chcę hostować statyczną witrynę internetową obsługującą tylko HTTPS przy użyciu Amazon S3 i CloudFront. Oto, co zrobiłem do tej pory:

  1. Skonfiguruj zasobnik S3 na statyczny hosting witryn internetowych i umieść w nim pliki mojej witryny
  2. Utworzono dystrybucję CloudFront i wskazałem ją na wiadro S3
  3. Dodano rekord CNAME w serwerach nazw mojej domeny dla wwwsubdomeny wskazujący na zasobnik CloudFront.

Jak na razie dobrze - mam dostęp do mojej strony internetowej pod www.example.comadresem. Jednak chcę, aby strona była dostępna tylko przez HTTPS, dla którego kupiłem certyfikat SSL od GoDaddy.

Teraz pytanie brzmi:

  1. Czy istnieje sposób na zainstalowanie tego certyfikatu SSL innej firmy w mojej witrynie hostowanej przez S3?
  2. Czy w tej konfiguracji istnieje sposób automatycznego przekierowania http na https?
jamix
źródło
1
Czy mogę to zrobić bezpłatnie?
Piyush S. Wanare
Możesz bezpłatnie otrzymać certyfikat SSL od Amazon, który odnawia się automatycznie. aws.amazon.com/certificate-manager Przewiń w dół do ikony znaku dolara :)
Costa
1
Głosuję za zamknięciem tego pytania jako niezwiązanego z tematem, ponieważ nie dotyczy programowania
Zach Saucier
1
Dlaczego nie przenieść pytania do ServerFault?
nu everest
@nueverest Ponieważ jest zbyt stary na migrację.
gre_gor

Odpowiedzi:

63

Tak, od dziś możesz to zrobić bezpłatnie.

Możesz teraz używać HTTPS z CNAME w CloudFront, ponieważ obsługuje on teraz niestandardowe certyfikaty SSL przy użyciu Server Name Indication (SNI): http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and- http-redirection-for-amazon-cloudfront.html

Udało mi się skonfigurować bezpłatny certyfikat Class 1 StartSSL dla mojej rozproszonej witryny statycznej CloudFront na S3 bez większych problemów (patrz: Błąd CloudFront podczas obsługi przez HTTPS przy użyciu SNI ).

wikichen
źródło
7
Szczegółowy przewodnik: bryce.fisher-fleig.org/blog/…
elado
3
Odpowiedź: przewodnik Bryce Fisher był bardzo dobry.
tresf
6
Jest tu subtelność. Możesz mieć HTTPS dla zasobnika S3, jeśli nie jest skonfigurowany do hostowania witryn . Zobacz uwagę o treści „Punkty końcowe serwisu WWW nie obsługują protokołu HTTPS”.
skeller88
6
OK, aby ominąć „subtelność” i opisać ją prostym angielskim, oto moja szansa. Wiadro S3 ze statyczną zawartością strony internetowej (html) można zamienić w witrynę internetową za pomocą kilku kliknięć. Ta witryna internetowa może używać tylko protokołu http. Jeśli chcesz korzystać z https, musisz skorzystać z usługi AWS Cloudfront i skonfigurować ją dla SNI, aby uzyskać https za darmo. (Kilka bardzo starych lub dziwnych przeglądarek nie obsługuje SNI.) HTML i inne zasoby można przechowywać na S3 przy niewielkich kosztach. Dodatkowo, jeśli otrzymujesz nazwę domeny od AWS, musisz skorzystać z ich usługi Elastic Load Balance. Opłaty to kilka centów za koncert.
Mike_Laird
5
Uważam za niesamowite, że ta odpowiedź otrzymała właściwą odpowiedź, kiedy po prostu nie odpowiada na pytanie: jak stwierdza @ skeller88, s3 https nie działa w przypadku hostingu witryn internetowych.
opactwo
36

21.01.2016 AWS uruchomił AWS Certificate Manager , który jest darmową usługą umożliwiającą wystawienie certyfikatu SSL do użytku z Elastic Load Balancer i Cloud Front (razem z S3).

Możesz dowiedzieć się więcej na: https://aws.amazon.com/certificate-manager/

Możesz też sprawdzić, jak wdrożyć witrynę S3 + Cloudfront z bezpłatnym SSL od AWS pod adresem : https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on -pilarki /

barbolo
źródło
1
Właśnie skonfigurowałem to dla mojej witryny dziś rano. To statyczna witryna hostowana w s3. To było super łatwe. Po prostu poszedłem do menedżera ACM, poprosiłem o certyfikat, odłożyłem ustawienia poczty e-mail na kilka godzin (skończyło się na upublicznieniu moich informacji WHOIS, czekając na wiadomość e-mail z potwierdzeniem), a następnie skonfigurowałem route53, aby wskazywała punkt końcowy w chmurze . Bardzo się cieszę, że znalazłem ten komentarz.
paranoidalny
1
@paranoid Czy dzięki temu mogę hostować moją witrynę internetową s3 tylko jako https?
Piyush S. Wanare
1
@ PiyushS.Wanare tak, możesz!
barbolo
Umieść łącze HTTPS w rekordzie CNAME w Route53.
Costa
@paranoid nie jestem pewien, co rozumiesz przez „punkt końcowy w chmurze”… skąd mam te informacje?
opactwo
17

Od dziś Cloudfront oferuje niestandardowy SSL: http://aws.amazon.com/cloudfront/pricing/

Pamiętaj, że pobierają 600 USD miesięcznie. Więcej szczegółów w powyższym linku.

Christian Fazzini
źródło
7
600 / miesiąc ......
Pacerier
11
Płacisz tylko 600 $, jeśli chcesz mieć dedykowany adres IP. Jeśli jesteś zadowolony z używania SNI (który nie jest obsługiwany przez starsze przeglądarki), nie obowiązują żadne dodatkowe opłaty
Martin OConnor
2
Jeśli chcesz obsługiwać tylko nowoczesne przeglądarki (przez SNI), jest to teraz znacznie tańsze: aws.amazon.com/about-aws/whats-new/2014/03/05/ ...
Andrew Newdigate
To jest teraz ZA DARMO! aws.amazon.com/certificate-manager Przewiń w dół do ikony znaku dolara. Poza tym myślę, że odnawiają się automatycznie. Konfiguracja jest tak prosta, jak wprowadzenie żądanych domen na certyfikacie i kliknięcie linku weryfikacyjnego w poniższym e-mailu.
Costa
3

Dla mnie musiałem wgrać prostą stronę Reacta do S3. Jak opisuje barbolo, potrzebujesz certyfikatu, aby uzyskać dostęp do strony przez SSL. Jeśli witryna statyczna, którą chcesz wdrożyć, jest wystarczająco prosta, możesz:

  1. Prześlij do S3.
  2. Czy nie wybrać „Static Hosting WWW”
  3. Konwertuj wszystkie linki względne (na css, js itp.) Na linki bezwzględne.

np. z /css/media.css należy przekonwertować go na https://s3-region-amazonaws.com/bucket-name/css/media.css (u mnie musiałem zmienić tylko linki w index.html)

  1. Udostępnij publicznie tylko zawartość zasobnika.

Otóż ​​to. Możesz uzyskać dostęp do pliku indeksu przez https.

Prosta witryna to witryna z głównym plikiem index.html wskazującym na niektóre strony css i js.

alexopoulos7
źródło
Niesamowite. Dzięki
user1874634
Jeśli Twoja aplikacja jest przeznaczona na produkcję, to zły pomysł.
Sébastien
sébastien, podziel się z nami szczegółami, dlaczego to zły pomysł. Dajemy publiczny dostęp do odczytu do obiektów, a nie do wiadra.
alexopoulos7
To dobry i najprostszy sposób, ale pamiętaj, że dla każdego pliku w Twojej aplikacji żądanie będzie przesyłane przez Internet, co zmniejszy wydajność Twojej aplikacji. Korzystanie z CloudFront jest najlepszym pomysłem w tych scenariuszach.
Nitesh B.
@ NiteshB.CloudFront to ból dupy, gdy trzeba często aktualizować obiekty S3
Dustin Sun
0

Oprócz odpowiedzi @ wikichen.

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

Domyślnie możesz dostarczać treści do przeglądających przez HTTPS, używając nazwy domeny dystrybucyjnej CloudFront w swoich adresach URL, na przykład https://dxxxxx.cloudfront.net/image.jpg .

Jeśli chcesz dostarczać treści przez HTTPS przy użyciu własnej nazwy domeny i własnego certyfikatu SSL, możesz skorzystać z jednej z naszych funkcji obsługi niestandardowego certyfikatu SSL.

Jason
źródło