วิธีกำหนดค่า SSL สำหรับที่ฝากข้อมูล Amazon S3


142

ฉันใช้ที่ฝากข้อมูล Amazon S3 สำหรับการอัปโหลดและดาวน์โหลดข้อมูลโดยใช้แอปพลิเคชัน. NET ของฉัน ตอนนี้คำถามของฉันคือ: ฉันต้องการเข้าถึง S3 bucket ของฉันโดยใช้ SSL เป็นไปได้หรือไม่ที่จะใช้ SSL สำหรับที่ฝากข้อมูล Amazon s3


คำตอบ:


151

คุณสามารถเข้าถึงไฟล์ของคุณผ่าน SSL เช่นนี้:

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

หากคุณใช้โดเมนที่กำหนดเองสำหรับที่เก็บข้อมูลของคุณคุณสามารถใช้ S3 และ CloudFront ร่วมกับใบรับรอง SSL ของคุณเอง (หรือสร้างฟรีผ่านทาง Amazon Certificate Manager): http://aws.amazon.com/cloudfront/custom-ssl- โดเมน /


42
นั่นไม่จริงทั้งหมด คุณสามารถใช้ชื่อฝากข้อมูลโดยไม่มีจุด: this-is-my-awesome-bucket.s3.amazonaws.com Amazon มีใบรับรองไวด์การ์ด เนื่องจากคุณไม่สามารถใช้จุดได้คุณจึงไม่มีโดเมน CNAME ที่ชี้ไปที่ที่เก็บข้อมูลของคุณ
Docunext

4
ระวังชื่อถังที่มีระยะเวลา! SSL จะไม่ทำงานบนอุปกรณ์ iOS แต่จะทำงานได้ดีใน Chrome ดูstackoverflow.com/questions/3048236/…
Simon_Weaver

1
Amazon CloudFront จะทำสิ่งนี้ให้คุณ
เกร็ก

3
หากต้องการมีชื่อถังเครื่องหมายแบบจุด (เพื่อให้คุณสามารถใช้นามแฝงเส้นทาง 53) และคุณต้องการวางวัตถุในผ่าน REST ให้แน่ใจว่าชื่อโฮสต์ตรงกับพื้นที่ ตัวอย่างเช่นที่ฝากข้อมูลของฉันอยู่ในus-west-2ดังนั้นชื่อโฮสต์จะเป็นจริงs3-us-west-2.amazonaws.comมิฉะนั้นคุณจะได้รับข้อผิดพลาด
noetix

1
หากไม่มี cloudfront เราสามารถทำสิ่งนี้ได้หรือไม่?
Arun Kumar

28

เพิ่ม SSL SSL โดเมนที่กำหนดเองในวันนี้ด้วยราคา $ 600 / ใบรับรอง / เดือน ลงทะเบียนสำหรับคำเชิญของคุณด้านล่าง: http://aws.amazon.com/cloudfront/custom-ssl-domains/

อัปเดต : ขณะนี้ลูกค้ามี SNI ที่จัดหาให้โดยไม่มีค่าใช้จ่ายเพิ่มเติม ราคาถูกกว่า $ 600 / mo มากและด้วย XP เกือบจะถูกฆ่าตายมันน่าจะใช้ได้ดีสำหรับกรณีส่วนใหญ่

@skalee AWS มีกลไกเพื่อให้บรรลุสิ่งที่โปสเตอร์ขอ "ใช้ SSL สำหรับถัง Amazon S3" CloudFrontก็เรียกว่า ฉันกำลังอ่าน "นำไปใช้" เป็น "ใช้ใบรับรอง SSL ของฉัน" ไม่ใช่ "เพียงใส่ S บน URL HTTP ซึ่งฉันมั่นใจว่า OP สามารถสรุปได้

เนื่องจาก CloudFront มีค่าใช้จ่ายเหมือนกับ S3 ($ 0.12 / GB) แต่มีคุณสมบัติเพิ่มเติมมากมายรอบ ๆ SSL และช่วยให้คุณเพิ่มใบรับรอง SNI ของคุณเองโดยไม่มีค่าใช้จ่ายเพิ่มเติมจึงเป็นการแก้ไขที่ชัดเจนสำหรับ "การนำ SSL" ไปใช้ในโดเมนของคุณ


64
CloudFront ไม่ใช่ S3
skalee

6
@skalee ถูกต้อง แต่ถ้าคุณต้องการเข้าถึงผ่านโดเมนที่มีใบรับรอง SSL ที่กำหนดเองตามคำขอ OP คุณสามารถตั้งค่าใบรับรอง CNAME SSL ที่กำหนดเองด้วยวิธีนี้และเข้าถึงผ่าน CF
Joseph Lust

2
ในขณะนี้ฉันได้ตั้งค่า CNAME สองรายการ: static-s3 และ static-cf อันแรกที่ชี้ตรงไปยัง S3 ของฉันที่สองสู่ CF ครั้งแรกไม่สามารถรองรับ SSL วินาทีได้ แต่มันเป็น CF และ S3 ไม่เป็น skalee ชี้ให้เห็น นั่นเป็นสิ่งที่ดีที่สุดที่ฉันคิดว่าเราทำได้ตอนนี้
อันตราย

2
ว้าวฉันเดาว่าพวกเขาต้องชดเชยค่าใช้จ่ายในการจัดเก็บที่ถูกลงเรื่อย ๆ อย่างน้อยก็คิดตามสัดส่วน ถ้าคุณใช้ใบรับรอง SSL ของคุณเป็นเวลา 1 ชั่วโมงในหนึ่งเดือนเพียง $ 20 ;-)
Simon_Weaver

1
@ Elegant.Scripting หากคุณมีใบรับรอง SSL เฉพาะ (ไม่ใช่ใบรับรอง SNI) เครื่องนั้นต้องใช้ IP เฉพาะซึ่งมีค่าใช้จ่าย สันนิษฐานว่าเป็น IP เฉพาะที่จำเป็นสำหรับคุณในทุก ๆ ที่ทั่วโลกที่ S3 โฮสต์ข้อมูลของคุณ ดังนั้นที่เพิ่มขึ้น แต่ฉันคิดว่าส่วนใหญ่เป็นเพียงการโพสต์ที่คนไม่ต้องการและพวกเขาสามารถแจ็คราคาขึ้นสำหรับผู้ที่ทำ หากคุณไม่ต้องการรองรับ IE6 คุณควรจะตกลงกับใบรับรอง SNI ใน CloudFront
Simon_Weaver

11

ฉันพบว่าคุณสามารถทำได้อย่างง่ายดายผ่านบริการ Cloud Flare

ตั้งค่าฝากข้อมูลเปิดใช้งานการโฮสต์เว็บบนฝากข้อมูลและชี้ CNAME ที่ต้องการไปยังจุดสิ้นสุดนั้นผ่าน Cloudflare ... และชำระค่าบริการแน่นอน ... แต่ $ 5- $ 20 VS $ 600 นั้นง่ายกว่ามาก

รายละเอียดทั้งหมดที่นี่: https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/


1
ลองคำแนะนำของฉันที่นี่: engaging.io/...
ราล์ฟ Vugts

3

หากคุณต้องการจริงๆให้พิจารณาการเปลี่ยนเส้นทาง

ตัวอย่างเช่นหากassets.my-domain.example.com/path/to/fileคุณต้องการสามารถเปลี่ยนเส้นทาง 301 หรือ 302 ไปที่( my-bucket-name.s3.amazonaws.com/path/to/fileหรือs3.amazonaws.com/my-bucket-name/path/to/fileโปรดจำไว้ว่าในกรณีแรกmy-bucket-nameไม่สามารถมีจุดใด ๆ ได้มิฉะนั้นจะไม่ตรงกับที่*.s3.amazonaws.com, s3.amazonaws.comระบุในใบรับรอง S3)

ไม่ได้ทดสอบ แต่ฉันเชื่อว่ามันใช้ได้ อย่างไรก็ตามฉันเห็น gotchas น้อย

คนแรกค่อนข้างชัดเจนคำขอเพิ่มเติมเพื่อรับการเปลี่ยนเส้นทางนี้ และฉันสงสัยว่าคุณสามารถใช้เซิร์ฟเวอร์การเปลี่ยนเส้นทางที่ได้รับจาก บริษัท จดทะเบียนชื่อโดเมนของคุณ - คุณต้องอัปโหลดใบรับรองที่ถูกต้องที่นั่น - ดังนั้นคุณต้องใช้เซิร์ฟเวอร์ของคุณเอง

อย่างที่สองคือคุณสามารถมี URL พร้อมชื่อโดเมนของคุณในซอร์สโค้ดหน้า แต่เมื่อตัวอย่างเช่นผู้ใช้เปิดรูปในแท็บแยกจากนั้นแถบที่อยู่จะแสดง URL เป้าหมาย


2
ฉันไม่แน่ใจ แต่ฉันคิดว่านี่อาจทำให้เกิดปัญหา CORS
xdhmoore

3

ไม่สามารถทำได้โดยตรงกับ S3 แต่คุณสามารถสร้างการกระจาย Cloud Front จากที่เก็บข้อมูลของคุณ จากนั้นไปที่ตัวจัดการใบรับรองและขอใบรับรอง อเมซอนให้ฟรี ผู้ที่คุณยืนยันการรับรองเรียบร้อยแล้วกำหนดให้การแจกจ่าย Cloud Front ของคุณ นอกจากนี้อย่าลืมตั้งค่ากฎให้ส่ง http โดยตรงไปยัง https อีกครั้ง

ฉันโฮสต์เว็บไซต์สแตติกสองแห่งใน Amazon S3 เช่นเว็บไซต์ส่วนตัวที่ฉันได้รับการรับรอง SSL เนื่องจากมีการเผยแพร่ Cloud Front


และคุณกำหนดชื่อโดเมนได้อย่างไร
netshark1000

ก่อนอื่นให้ไปที่ตัวจัดการใบรับรองและขอใบรับรองใหม่ เพิ่มโดเมนของคุณที่นั่นและรวมโดเมนย่อยไว้ด้วยหากจำเป็น ไม่เจ็บอะไรเลยที่จะนำโดเมนย่อยไปด้วยดังนั้นอาจวาง example.com และ * .example.com ลงไปด้วยก็ได้
Mika Kujapelto

0

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

สำหรับการสร้างเว็บไซต์แบบคงที่ Amazon เป็นสถานที่ที่จะไป มันไม่แพงจริงๆที่จะได้รับเว็บไซต์คงที่ด้วย SSL


2
สำหรับทุกคนที่มาที่นี่ด้วย google: อย่าลืมสร้างใบรับรอง AWS ของคุณ (เช่น) ในภูมิภาค N. Virginia มิฉะนั้นคุณจะไม่สามารถเลือกได้ในการแจกแจงโฆษณาของคุณ
KLoozen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.