HTTPS สำหรับเว็บไซต์คงที่ของ Amazon S3 [ปิด]


90

ฉันต้องการโฮสต์เว็บไซต์แบบคงที่เฉพาะ HTTPS โดยใช้ Amazon S3 และ CloudFront นี่คือสิ่งที่ฉันได้ทำไปแล้ว:

  1. ตั้งค่าบัคเก็ต S3 สำหรับการโฮสต์เว็บไซต์แบบคงที่และใส่ไฟล์เว็บไซต์ของฉัน
  2. สร้างการกระจาย CloudFront และชี้ไปที่ที่เก็บข้อมูล S3
  3. เพิ่มระเบียน CNAME ในเนมเซิร์ฟเวอร์ของโดเมนของฉันสำหรับwwwโดเมนย่อยที่ชี้ไปที่ที่เก็บข้อมูล CloudFront

จนถึงตอนนี้ดีมาก - ฉันสามารถเข้าถึงเว็บไซต์ของฉันได้โดยใช้ที่www.example.comอยู่ อย่างไรก็ตามฉันต้องการให้ไซต์พร้อมใช้งานผ่าน HTTPS เท่านั้นซึ่งฉันซื้อใบรับรอง SSL จาก GoDaddy

ตอนนี้คำถามคือ:

  1. มีวิธีติดตั้งใบรับรอง SSL ของบุคคลที่สามนี้บนเว็บไซต์ที่โฮสต์ S3 ของฉันหรือไม่
  2. มีวิธีเปลี่ยนเส้นทาง http เป็น https อัตโนมัติด้วยการตั้งค่านี้หรือไม่

1
สามารถทำได้โดยไม่เสียค่าใช้จ่ายหรือไม่?
Piyush S. Wanare

คุณสามารถรับใบรับรอง SSL จาก Amazon ได้ฟรีและต่ออายุโดยอัตโนมัติ aws.amazon.com/certificate-managerเลื่อนลงไปที่ไอคอนเครื่องหมายดอลลาร์:)
Costa

1
ฉันโหวตให้ปิดคำถามนี้เป็นนอกประเด็นเพราะไม่เกี่ยวข้องกับการเขียนโปรแกรม
Zach Saucier

1
ทำไมไม่ย้ายคำถามไปที่ ServerFault?
nu everest

@nueverest เพราะแก่เกินไปที่จะโยกย้าย.
gre_gor

คำตอบ:


63

ได้ ณ วันนี้คุณสามารถทำได้โดยไม่มีค่าใช้จ่าย

ตอนนี้คุณสามารถใช้ HTTPS กับ CNAME บน CloudFront ได้แล้วเพราะตอนนี้รองรับใบรับรอง SSL แบบกำหนดเองโดยใช้ Server Name Indication (SNI): http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and- http-redirection-for-amazon-cloudfront.html

ฉันจัดการเพื่อตั้งค่าใบรับรอง Class 1 StartSSL ฟรีสำหรับไซต์คงที่แบบกระจาย CloudFront ของฉันบน S3 โดยไม่มีปัญหามากเกินไป (ดู: ข้อผิดพลาดของ CloudFront เมื่อให้บริการผ่าน HTTPS โดยใช้ SNI )


7
คำแนะนำโดยละเอียด: bryce.fisher-fleig.org/blog/…
elado

3
ข้อเสนอแนะ: คำแนะนำของ bryce fisher ดีมาก
tresf

6
มีความละเอียดอ่อนอยู่ที่นี่ คุณสามารถมี HTTPS สำหรับถัง S3 ถ้ามันไม่ได้กำหนดค่าสำหรับเว็บไซต์โฮสติ้ง ดูหมายเหตุที่ระบุว่า "จุดสิ้นสุดของเว็บไซต์ไม่รองรับ https"
skeller88

6
โอเคเพื่อให้ผ่านพ้น "ความละเอียดอ่อน" และอธิบายเป็นภาษาอังกฤษธรรมดานี่คือภาพของฉัน ถัง S3 ที่มีเนื้อหาหน้าเว็บแบบคงที่ (html) สามารถเปลี่ยนเป็นเว็บไซต์ได้ด้วยการคลิกเพียงไม่กี่ครั้ง เว็บไซต์นี้ใช้ได้เฉพาะ http หากคุณต้องการ https คุณต้องใช้บริการ Cloudfront ของ AWS และกำหนดค่าสำหรับ SNI เพื่อรับ https ฟรี (เบราว์เซอร์ที่เก่ามากหรือแปลก ๆ ไม่รองรับ SNI) สามารถจัดเก็บ html และทรัพยากรอื่น ๆ บน S3 ได้ในราคาประหยัด นอกจากนี้หากคุณได้รับชื่อโดเมนจาก AWS คุณต้องใช้บริการ Elastic Load Balance ค่าธรรมเนียมไม่กี่เซ็นต์ต่อกิ๊ก
Mike_Laird

5
ฉันคิดว่ามันน่าทึ่งที่คำตอบนี้ได้รับคำตอบที่ถูกต้องเมื่อมันไม่ได้ตอบคำถาม: ตามที่ระบุโดย @ skeller88, s3 https ใช้ไม่ได้กับการโฮสต์เว็บไซต์
abbood

36

เมื่อวันที่ 2016-01-21 AWS ได้เปิดตัวAWS Certificate Managerซึ่งเป็นบริการฟรีที่ช่วยให้คุณสามารถออกใบรับรอง SSL เพื่อใช้กับ Elastic Load Balancer และ Cloud Front (พร้อมกับ S3 ด้วย)

สามารถเรียนรู้เพิ่มเติมได้ที่: https://aws.amazon.com/certificate-manager/

และคุณสามารถตรวจสอบวิธีการปรับใช้เว็บไซต์ S3 + Cloudfront ด้วย SSL ฟรีจาก AWS ได้ที่: https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on - เลื่อย /


1
ฉันเพิ่งตั้งค่านี้สำหรับไซต์ของฉันเมื่อเช้านี้ เป็นไซต์คงที่โฮสต์ใน s3 มันเป็นซุปเปอร์ง่าย ฉันไปที่ผู้จัดการ acm ขอใบรับรองใช้เวลาสองสามชั่วโมงกับการตั้งค่าอีเมลของฉัน (ลงเอยด้วยการทำให้ข้อมูล WHOIS ของฉันเป็นแบบสาธารณะในขณะที่ฉันรออีเมลยืนยัน) จากนั้นตั้งค่า route53 เพื่อชี้ไปที่จุดสิ้นสุดของ cloudfront . มีความสุขมากที่พบความคิดเห็นนี้
หวาดระแวง

1
@paranoid ด้วยสิ่งนี้ฉันสามารถโฮสต์เว็บไซต์ s3 ของฉันเป็น https เท่านั้นได้หรือไม่?
Piyush S. Wanare

1
@ PiyushS.Wanare ใช่คุณทำได้!
barbolo

ใส่ลิงก์ HTTPS ในระเบียน CNAME ใน Route53
Costa

@paranoid ไม่แน่ใจว่า "cloudfront endpoint" หมายถึงอะไร .. ฉันจะเอาข้อมูลนั้นมาจากไหน
abbood

17

ณ วันนี้ Cloudfront ให้บริการ SSL ที่กำหนดเอง: http://aws.amazon.com/cloudfront/pricing/

โปรดทราบว่าพวกเขาเรียกเก็บเงิน $ 600 / เดือน รายละเอียดเพิ่มเติมตามลิงค์ด้านบน


7
600 / เดือน ......
Pacerier

11
คุณจ่ายเพียง $ 600 หากคุณต้องการที่อยู่ IP เฉพาะ หากคุณพอใจที่จะใช้ SNI (ซึ่งเบราว์เซอร์รุ่นเก่าไม่รองรับ) จะไม่มีค่าใช้จ่ายเพิ่มเติม
Martin OConnor

2
หากคุณยินดีที่จะสนับสนุนเบราว์เซอร์สมัยใหม่เท่านั้น (ผ่าน SNI) ตอนนี้ราคาถูกกว่ามาก: aws.amazon.com/about-aws/whats-new/2014/03/05/…
Andrew Newdigate

ฟรีทันที! aws.amazon.com/certificate-managerเลื่อนลงไปที่ไอคอนเครื่องหมายดอลลาร์ นอกจากนี้ฉันคิดว่าพวกเขาต่ออายุโดยอัตโนมัติ และการตั้งค่าทำได้ง่ายเพียงแค่ป้อนโดเมนที่คุณต้องการในใบรับรองแล้วคลิกลิงก์ตรวจสอบความถูกต้องในอีเมลที่ตามมา
Costa

3

สำหรับฉันฉันต้องอัปโหลดเว็บไซต์ React แบบธรรมดาไปยัง S3 ตามที่ barbolo อธิบายว่าคุณต้องมีใบรับรองเพื่อเข้าถึงไซต์ผ่าน SSL หากไซต์คงที่ที่คุณต้องการปรับใช้นั้นเรียบง่ายเพียงพอคุณสามารถ:

  1. อัปโหลดไปยัง S3
  2. ไม่ได้เลือก "คงที่เว็บโฮสติ้ง"
  3. แปลงลิงก์สัมพัทธ์ทั้งหมด (เป็น css, js และอื่น ๆ ) เป็นลิงก์แบบสัมบูรณ์

เช่นจาก /css/media.css คุณควรแปลงเป็นhttps://s3-region-amazonaws.com/bucket-name/css/media.css (สำหรับฉันฉันต้องเปลี่ยนเฉพาะลิงก์ใน index.html)

  1. ทำให้เฉพาะเนื้อหาของที่เก็บข้อมูลเป็นสาธารณะ

แค่นั้นแหละ. คุณสามารถเข้าถึงไฟล์ดัชนีผ่าน https

ไซต์แบบธรรมดาคือไซต์ที่มีไฟล์ index.html หลักซึ่งชี้ไปยังหน้า css และ js บางหน้า


น่ากลัว ขอบคุณ
user1874634

หากแอปของคุณกำหนดเป้าหมายการผลิตนี่เป็นความคิดที่ไม่ดี
Sébastien

sébastienโปรดบอกรายละเอียดเพิ่มเติมว่าทำไมจึงเป็นความคิดที่ไม่ดี เราให้สิทธิ์เข้าถึงการอ่านแบบสาธารณะสำหรับออบเจ็กต์ที่ไม่เก็บข้อมูล
alexopoulos7

เป็นวิธีที่ดีและง่ายที่สุด แต่อย่าลืมว่าสำหรับทุกไฟล์ในแอปพลิเคชันของคุณคำขอจะเดินทางบนอินเทอร์เน็ตซึ่งจะลดประสิทธิภาพของแอปพลิเคชันของคุณ การใช้ CloudFront เป็นแนวคิดที่ดีที่สุดในสถานการณ์นี้
Nitesh B.

@ NiteshB.CloudFront ปวดตูดเมื่อคุณต้องการอัปเดตวัตถุ S3 บ่อยๆ
Dustin Sun

0

นอกจากคำตอบของ @ wikichen

จาก: https://aws.amazon.com/cloudfront/custom-ssl-domains/

โดยค่าเริ่มต้นคุณสามารถส่งเนื้อหาของคุณให้กับผู้ชมผ่าน HTTPS โดยใช้ชื่อโดเมน CloudFront กระจายของคุณใน URL ของคุณตัวอย่างเช่นhttps://dxxxxx.cloudfront.net/image.jpg

หากคุณต้องการส่งเนื้อหาของคุณผ่าน HTTPS โดยใช้ชื่อโดเมนของคุณเองและใบรับรอง SSL ของคุณเองคุณสามารถใช้คุณลักษณะการสนับสนุนใบรับรอง SSL แบบกำหนดเองของเรา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.