HTTPS untuk situs statis Amazon S3 [ditutup]

90

Saya ingin menghosting situs web statis khusus HTTPS menggunakan Amazon S3 dan CloudFront. Inilah yang telah saya lakukan sejauh ini:

  1. Siapkan bucket S3 untuk hosting situs web statis dan letakkan file situs web saya di dalamnya
  2. Membuat distribusi CloudFront dan mengarahkannya ke bucket S3
  3. Menambahkan data CNAME di server nama domain saya untuk wwwsubdomain yang mengarah ke keranjang CloudFront.

Sejauh ini, bagus - saya dapat mengakses situs saya menggunakan www.example.comalamat tersebut. Namun, saya ingin situs tersebut hanya tersedia melalui HTTPS, yang saya beli sertifikat SSL dari GoDaddy.

Sekarang, pertanyaannya adalah:

  1. Adakah cara untuk menginstal sertifikat SSL pihak ketiga ini di situs web saya yang dihosting S3?
  2. Apakah ada cara untuk memiliki pengalihan http ke https otomatis dengan penyiapan ini?
jamix
sumber
1
Bisakah saya melakukannya tanpa biaya?
Piyush S. Wanare
Anda bisa mendapatkan sertifikat SSL dari Amazon secara gratis, dan secara otomatis memperbarui. aws.amazon.com/certificate-manager Gulir ke bawah ke ikon tanda dolar :)
Costa
1
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena tidak berhubungan dengan pemrograman
Zach Saucier
1
Mengapa tidak memindahkan pertanyaan ke ServerFault?
nu everest
@nueverest Karena terlalu tua untuk bermigrasi.
gre_gor

Jawaban:

63

Ya, mulai hari ini Anda dapat melakukannya tanpa biaya.

Anda sekarang dapat menggunakan HTTPS dengan CNAME di CloudFront karena sekarang mendukung sertifikat SSL khusus menggunakan Server Name Indication (SNI): http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and- http-redirection-for-amazon-cloudfront.html

Saya berhasil menyiapkan sertifikat StartSSL Kelas 1 gratis untuk situs statis terdistribusi CloudFront saya di S3 tanpa terlalu banyak masalah (lihat: kesalahan CloudFront saat melayani melalui HTTPS menggunakan SNI ).

wikichen
sumber
7
Panduan lengkap: bryce.fisher-fleig.org/blog/…
elado
3
Umpan balik: Panduan bryce fisher sangat bagus.
tresf
6
Ada kehalusan di sini. Anda dapat memiliki HTTPS untuk bucket S3 jika tidak dikonfigurasi untuk hosting situs web . Lihat Catatan yang menyatakan "Titik akhir situs web tidak mendukung https."
skeller88
6
Oke, untuk melewati "kehalusan" dan menjelaskan dalam bahasa Inggris yang sederhana, inilah kesempatan saya. Bucket S3 dengan konten halaman web statis (html) dapat diubah menjadi situs web dengan beberapa klik. Situs web ini hanya dapat menggunakan http. Jika Anda menginginkan https, Anda harus menggunakan layanan Cloudfront AWS dan mengkonfigurasinya untuk SNI untuk mendapatkan https secara gratis. (Beberapa peramban yang sangat tua atau aneh tidak mendukung SNI.) Html dan sumber daya lainnya dapat disimpan di S3 dengan biaya rendah. Selain itu, jika Anda mendapatkan nama domain dari AWS, Anda harus menggunakan layanan Elastic Load Balance mereka. Biaya beberapa sen per pertunjukan.
Mike_Laird
5
Saya merasa luar biasa bahwa jawaban ini mendapatkan jawaban yang benar, padahal tidak menjawab pertanyaan: seperti yang dinyatakan oleh @ skeller88, s3 https tidak berfungsi untuk hosting situs web.
abbood
36

Pada tanggal 21 Januari 2016, AWS meluncurkan AWS Certificate Manager , yang merupakan layanan gratis yang memungkinkan Anda menerbitkan sertifikat SSL untuk digunakan dengan Elastic Load Balancer dan Cloud Front (bersama dengan S3 juga).

Anda dapat mempelajari lebih lanjut di: https://aws.amazon.com/certificate-manager/

Dan Anda dapat memeriksa cara menerapkan situs web S3 + Cloudfront Anda dengan SSL gratis dari AWS di: https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on -aw /

barbolo
sumber
1
Saya baru saja menyiapkan ini untuk situs saya pagi ini. Ini adalah situs statis yang dihosting di s3. Itu yang super mudah. Saya cukup pergi ke manajer acm, meminta sertifikat, memikirkan pengaturan email saya selama beberapa jam (akhirnya membuat info WHOIS saya menjadi publik sementara saya menunggu email konfirmasi), dan kemudian mengatur route53 untuk menunjuk ke titik akhir cloudfront . Sangat senang saya menemukan komentar ini.
paranoid
1
@paranoid Dengan ini dapatkah saya meng-host situs web s3 saya sebagai https-only?
Piyush S. Wanare
1
@ PiyushS.Wanare ya, Anda bisa!
barbolo
Letakkan tautan HTTPS dalam data CNAME di Route53.
Costa
@paranoid tidak yakin apa yang Anda maksud dengan "cloudfront endpoint" .. dari mana saya mendapatkan informasi itu?
abbood
17

Mulai hari ini, Cloudfront menawarkan SSL khusus: http://aws.amazon.com/cloudfront/pricing/

Perlu diingat, mereka mengenakan biaya $ 600 / bulan. Detail lebih lanjut tentang tautan di atas.

Christian Fazzini
sumber
7
600 / bulan ......
Pacerier
11
Anda hanya membayar $ 600 jika Anda menginginkan alamat IP khusus. Jika Anda senang menggunakan SNI (yang tidak didukung oleh browser lama), tidak ada biaya tambahan
Martin OConnor
2
Jika Anda hanya ingin mendukung peramban modern (melalui SNI), ini sekarang jauh lebih murah: aws.amazon.com/about-aws/whats-new/2014/03/05/…
Andrew Newdigate
Ini GRATIS sekarang! aws.amazon.com/certificate-manager Gulir ke bawah ke ikon tanda dolar. Ditambah saya pikir mereka memperbarui secara otomatis. Dan penyiapannya semudah memasukkan domain yang Anda inginkan pada sertifikat dan mengklik link validasi di email yang mengikuti.
Costa
3

Bagi saya, saya harus mengunggah situs web React sederhana ke S3. Seperti yang dijelaskan oleh barbolo, Anda memerlukan sertifikat untuk mengakses situs melalui SSL. Jika situs statis yang ingin Anda terapkan cukup sederhana, Anda dapat:

  1. Unggah ke S3.
  2. Jangan tidak pilih "Static Website Hosting"
  3. Ubah semua tautan relatif (ke css, js, dll) menjadi tautan absolut.

misalnya dari /css/media.css Anda harus mengubahnya menjadi https://s3-region-amazonaws.com/bucket-name/css/media.css (bagi saya, saya hanya perlu mengubah tautan di index.html)

  1. Jadikan hanya konten bucket yang publik.

Itu dia. Anda dapat mengakses file indeks melalui https.

Situs Sederhana adalah situs dengan file index.html utama yang mengarah ke beberapa halaman css dan js.

alexopoulos7
sumber
Hebat. Terima kasih
pengguna1874634
Jika aplikasi Anda menargetkan produksi, ini adalah ide yang buruk.
Sébastien
sébastien tolong bagikan dengan kami lebih detail mengapa ini ide yang buruk. Kami memberikan akses baca publik ke objek bukan ke keranjang.
alexopoulos7
Ini adalah cara yang baik dan paling sederhana tetapi ingat, untuk setiap file dalam aplikasi Anda, permintaan akan berjalan di internet yang akan mengurangi kinerja aplikasi Anda. Menggunakan CloudFront adalah ide terbaik dalam skenario ini.
Nitesh B.
@ NiteshB.CloudFront sangat menyakitkan ketika Anda perlu sering memperbarui objek S3 Anda
Dustin Sun
0

Selain jawaban @ wikichen.

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

Secara default, Anda dapat mengirimkan konten Anda ke penonton melalui HTTPS dengan menggunakan nama domain distribusi CloudFront di URL Anda, misalnya, https://dxxxxx.cloudfront.net/image.jpg .

Jika Anda ingin mengirimkan konten Anda melalui HTTPS menggunakan nama domain Anda sendiri dan sertifikat SSL Anda sendiri, Anda dapat menggunakan salah satu fitur dukungan sertifikat SSL Kustom kami.

Jason
sumber