การตั้งค่า HTTPS ใน Amazon EC2


107

เราจะเปิดใช้ HTTPS ใน Amazon EC2 ได้อย่างไร ไซต์ของเรากำลังทำงานบน HTTP


1
คำถามที่ดี แต่ฉันตั้งกลุ่มรักษาความปลอดภัยและไม่มีเสน่ห์เกิดขึ้น
Shark Deng

คำตอบ:


81

ขั้นแรกคุณต้องเปิดพอร์ต HTTPS (443) ในการทำเช่นนั้นให้ไปที่https://console.aws.amazon.com/ec2/และคลิกที่Security Groupsลิงก์ทางด้านซ้ายจากนั้นสร้างกลุ่มความปลอดภัยใหม่โดยมี HTTPS ด้วย จากนั้นเพียงอัปเดตกลุ่มความปลอดภัยของอินสแตนซ์ที่กำลังทำงานอยู่หรือสร้างอินสแตนซ์ใหม่โดยใช้กลุ่มนั้น

หลังจากขั้นตอนเหล่านี้งาน EC2 ของคุณเสร็จสิ้นและทั้งหมดนี้เป็นปัญหาของแอปพลิเคชัน


15
ฉันสามารถเพิ่มกฎใหม่สำหรับพอร์ต 443 ให้กับกลุ่มความปลอดภัยที่อินสแตนซ์ใช้และมันเพิ่งเริ่มทำงานโดยไม่ต้องรีบูตเครื่อง
Dmitry Efimenko

9
you can't change a security group of a running instance, even rebooting- ฉันคิดว่าข้อ จำกัด นี้ถูกลบออกไปตั้งแต่โพสต์คำตอบนี้
Yuriy Nakonechnyy

12
คุณไม่จำเป็นต้องเปลี่ยนกลุ่มความปลอดภัยก็ทำได้Edit inbound rules
ข่อย

8
@ nikhil84 โดยการเพิ่ม HTTPS ในกลุ่มความปลอดภัยคุณเปิดเฉพาะพอร์ต 443 บนเครื่องซึ่งเป็นขั้นตอนที่ 1 ขั้นที่ 2 คุณต้องตั้งค่าเซิร์ฟเวอร์ของคุณบนเครื่องนั้นเพื่อรับฟังพอร์ต 443 (แทนที่จะเป็นพอร์ต HTTP เริ่มต้น 80) และยอมรับการรับส่งข้อมูล HTTPS คุณใช้เซิร์ฟเวอร์ใด
Yuriy Nakonechnyy

4
@ nikhil84 โปรดปฏิบัติตามหลักเกณฑ์ที่ระบุไว้ที่นี่: digitalocean.com/community/tutorials/…เพื่อตั้งค่า https บน Apache HTTPD
Yuriy Nakonechnyy

45

คำตอบนี้มุ่งเน้นไปที่ผู้ที่ซื้อโดเมนในไซต์อื่น (เช่น GoDaddy) และต้องการใช้ใบรับรองฟรีของ Amazon กับ Certificate Manager

คำตอบนี้ใช้ Amazon Classic Load Balancer (จ่าย) ดูราคาก่อนใช้งาน


ขั้นตอนที่ 1 - ขอใบรับรองกับ Certificate Manager

ไปที่ตัวจัดการใบรับรอง> ขอใบรับรอง> ขอใบรับรองสาธารณะ

ในชื่อโดเมนคุณจะเพิ่มmyprojectdomainname.comและ*.myprojectdomainname.comและไปถัดไป

เลือกการตรวจสอบอีเมลและยืนยันและร้องขอ

เปิดอีเมลที่คุณได้รับ (ในบัญชีอีเมลที่คุณซื้อโดเมน) และเปิดเผยคำขอ

หลังจากนี้ให้ตรวจสอบว่าสถานะการตรวจสอบความถูกต้อง myprojectdomainname.comและ*.myprojectdomainname.comสำเร็จหรือไม่หากสำเร็จคุณสามารถดำเนินการต่อในขั้นตอนที่ 2

ขั้นตอนที่ 2 - สร้างกลุ่มความปลอดภัยให้กับ Load Balancer

ใน EC2 ให้ไปที่ Security Groups> และ Create a Security Group และเพิ่ม http และ https ขาเข้า

มันจะเป็นดังนี้: ป้อนคำอธิบายภาพที่นี่

ขั้นตอนที่ 3 - สร้างตัวจัดสรรภาระงาน

EC2> ตัวโหลดบาลานเซอร์> สร้างตัวโหลดบาลานเซอร์> ตัวโหลดบาลานเซอร์แบบคลาสสิก (ตัวเลือกที่สาม)

สร้าง LB ภายใน - vpc ของโปรเจ็กต์ของคุณบน Load Balancer Protocol เพิ่ม Http และ Https ป้อนคำอธิบายภาพที่นี่

ถัดไป> เลือกออกจากกลุ่มความปลอดภัย

เลือกกลุ่มความปลอดภัยที่คุณสร้างไว้ในขั้นตอนก่อนหน้า

ถัดไป> เลือกใบรับรองจาก ACM

เลือกใบรับรองของขั้นตอนที่ 1

ถัดไป>

ในการตรวจสอบประสิทธิภาพการทำงานฉันใช้เส้นทาง ping / (หนึ่งเครื่องหมายทับแทน /index.html)

ขั้นตอนที่ 4 - เชื่อมโยงอินสแตนซ์ของคุณกับกลุ่มความปลอดภัยของตัวจัดสรรภาระงาน

EC2> อินสแตนซ์> คลิกที่โครงการของคุณ> การดำเนินการ> เครือข่าย> เปลี่ยนกลุ่มความปลอดภัย

เพิ่มกลุ่มความปลอดภัยของตัวจัดสรรภาระงานของคุณ

ขั้นตอนที่ 5

EC2> Load Balancer> คลิกที่ตัวโหลดบาลานเซอร์ที่คุณสร้าง> คัดลอกชื่อ DNS (A Record) มันจะเป็นอย่างนั้น myproject-2021611191.us-east-1.elb.amazonaws.com

ไปที่เส้นทาง 53> โซนเส้นทาง> คลิกที่ชื่อโดเมน> ไปที่ชุดระเบียน (หากคุณไม่มีโดเมนของคุณที่นี่ให้สร้างโซนที่โฮสต์ด้วยDomain Name: myprojectdomainname.comและType: Public Hosted Zone)

ตรวจสอบว่าคุณมีระเบียนประเภทA (อาจไม่ใช่) สร้าง / แก้ไขชุดระเบียนที่มีชื่อว่างเปล่าพิมพ์ A นามแฝงใช่และกำหนดเป้าหมาย DNS ที่คุณคัดลอก

สร้างชุดระเบียนใหม่ประเภทAชื่อ*.myprojectdomainname.comนามแฝงใช่และกำหนดเป้าหมายโดเมนของคุณ (myprojectdomainname.com) วิธีนี้จะทำให้สามารถเข้าถึงไซต์ของคุณได้ด้วย www.myprojectdomainname.com และ subsite.myprojectdomainname.com หมายเหตุ: คุณจะต้องกำหนดค่า reverse proxy (Nginx / Apache) จึงจะทำได้

ใน NS คัดลอกค่าเซิร์ฟเวอร์ชื่อ 4 เพื่อใช้ในขั้นตอนต่อไปมันจะเป็นดังนี้:

ns-362.awsdns-45.com ns-1558.awsdns-02.co.uk ns-737.awsdns-28.net ns-1522.awsdns-62.org

ไปที่ EC2> อินสแตนซ์> และคัดลอก IPv4 Public IP ด้วย

ขั้นตอนที่ 6

ในไซต์จดทะเบียนโดเมนที่คุณซื้อโดเมน (ในกรณีของฉันคือ GoDaddy)

เปลี่ยนการกำหนดเส้นทางhttp : <Your IPv4 Public IP Number>และเลือกส่งต่อด้วยการกำบัง

เปลี่ยน Name Servers (NS) เป็น 4 NS ที่คุณคัดลอกซึ่งอาจใช้เวลา 48 ชั่วโมงจึงจะมีผล


ฉันต้องใช้ตัวจัดสรรภาระงานหรือไม่หากต้องการ https
Curtis

ฉันทำทั้งหมดนี้ แต่ฉันได้รับ ERR_CONNECTION_TIMED_OUT เมื่อฉันเข้าสู่โดเมนของฉันในเบราว์เซอร์
Curtis

1
ฉันต้องการสร้างตัวโหลดบาลานเซอร์ด้วย Target Group ใหม่บนพอร์ต 80 จากนั้นแก้ไขตัวฟังเพื่อใช้พอร์ต 80 ใช้งานได้เลย ขอบคุณ.
Curtis

1
@Curtis Load balancer ไม่ใช่ตัวเลือกเดียวในการใช้ https คุณยังสามารถกำหนดค่า "ให้เข้ารหัส" ภายใน EC2 ของคุณได้ด้วย
DigaoParceiro

@DigaoParceiro คุณทำอะไรกับขั้นตอนที่ 5. คัดลอกชื่อ DNS
Prashant

10

อินสแตนซ์ Amazon EC2 เป็นเพียงเครื่องเสมือนดังนั้นคุณสามารถตั้งค่า SSL ได้แบบเดียวกับที่คุณตั้งค่าบนเซิร์ฟเวอร์ใด ๆ

คุณไม่ได้ระบุว่าคุณอยู่บนแพลตฟอร์มใดจึงเป็นการยากที่จะให้ข้อมูลเพิ่มเติม


สวัสดี - ฉันใช้อินสแตนซ์ T2 Micro Amazon Linux EC2 ฉันใช้ node.js เพื่อสนับสนุนเซิร์ฟเวอร์ ฉันกำลังฟังพอร์ต 443 ในสคริปต์เซิร์ฟเวอร์ของฉันและกลุ่มความปลอดภัยของฉันได้รับการกำหนดค่าสำหรับพอร์ต 443 ฉันต้องทำอะไรอีกบ้างเพื่อเปิดใช้งาน HTTPS ฉันต้องการใบรับรองใช่ไหม? มีปัญหาในการค้นหาข้อมูลที่เหมาะสมในการทำสิ่งนี้ที่ไม่ได้ขึ้นอยู่กับ Elastic Beanstalk
Stephen Tetreault

2
@SMT - ดูที่allowencrypt.orgสำหรับใบรับรองฟรีและต่ออายุอัตโนมัติ มีข้อมูลมากมาย (ผ่านทาง Google) เกี่ยวกับวิธีการตั้งค่าโดยใช้โหนด ไม่มีอะไรเฉพาะ AWS / EC2 ที่คุณต้องทำ
Geoff Appleford

2
ขอบคุณสำหรับการตอบกลับ! เมื่อวันก่อนฉันใช้งานได้จริงและได้ปรับปรุงขั้นตอนบางอย่าง หากใครกำลังอ่านสิ่งนี้จากอนาคต: github.com/MSCHF/aws-ec2-node-npm-setup
Stephen Tetreault

5

คำถามเก่า แต่ควรกล่าวถึงตัวเลือกอื่นในคำตอบ ในกรณีที่ระบบ DNS ของโดเมนของคุณถูกกำหนดไว้ใน Amazon Route 53 คุณสามารถใช้บริการ Amazon CloudFront หน้า EC2 ของคุณและแนบใบรับรอง Amazon SSL ฟรีไปด้วย ด้วยวิธีนี้คุณจะได้รับประโยชน์จากทั้งการมี CDN เพื่อการส่งเนื้อหาที่รวดเร็วขึ้นและการรักษาความปลอดภัยโดเมนของคุณด้วยโปรโตคอล HTTPS


มีข้อมูลอ้างอิงหรือบล็อกใดบ้างที่มีการกล่าวถึงขั้นตอนเพื่อให้บรรลุเป้าหมายนี้
Saurabh Yadav

ในวิดีโอนี้ atiqur rahman รับใบรับรอง ssl โดยใช้ตัวจัดการใบรับรองของ amazon จากนั้นเขากำหนดค่าหน้าคลาวด์ด้วยอินสแตนซ์ EC2 หลังจากเปิดใช้งานการกำหนดค่า http / 2 โดยอัตโนมัติ
Sachithra Dilshan

3

นอกจากนี้ยังต้องมีคำตอบสำหรับผู้ที่ต้องการ https ที่ไม่ยุ่งยากบน ec2 เพื่อจุดประสงค์ในการสาธิตและการทดสอบเป็นหลักวิธีหนึ่งที่พวกเขาสามารถทำได้อย่างรวดเร็วคือ:

ด้วยคำตอบของฉันที่นี่ซึ่งอธิบายถึงวิธีที่คุณสามารถบรรลุ https สำหรับวัตถุประสงค์ในการทดสอบในไม่กี่นาทีด้วย EC2 โดยไม่ต้องสร้างใบรับรองให้ยุ่งยาก



1

ใช้Elastic Load Balacingรองรับการสิ้นสุด SSL ที่ Load Balancer รวมถึงการถอดการถอดรหัส SSL จากอินสแตนซ์ของแอปพลิเคชันและการจัดการใบรับรอง SSL แบบรวมศูนย์


16
คุณไม่ได้ใช้ ELB เพียงเพื่อให้ SSL นั่นเป็นคำตอบที่ทำให้เข้าใจผิด เซิร์ฟเวอร์ของคุณจำเป็นต้องให้ SSL โดยไม่คำนึงถึงดังนั้นการเพิ่มตัวโหลดบาลานเซอร์จึงเป็นเพียงค่าใช้จ่ายเพิ่มเติมหากคุณไม่ต้องการ นอกจากนี้ยังมีการยุติ SSL ในซอฟต์แวร์ดังนั้น SSL ระหว่างตัวโหลดบาลานเซอร์และเซิร์ฟเวอร์จึงเป็นขั้นตอนเพิ่มเติมซึ่งส่งผลต่อประสิทธิภาพ
Thomas the Tank Engine

1
ฉันเห็นด้วยกับความคิดเห็นของคุณ มันจะเพิ่มต้นทุนเพิ่มเติมและส่งผลต่อประสิทธิภาพ เราไม่ทราบข้อกำหนดที่แน่นอนเกี่ยวกับการโหลดบนเซิร์ฟเวอร์ของพวกเขาดังนั้นจึงอาจเป็นหนทางไป แต่ฉันไม่เข้าใจคำพูดของคุณ "เซิร์ฟเวอร์ของคุณจำเป็นต้องให้ SSL โดยไม่คำนึงถึง" เหตุใดจึงจำเป็น ตัวโหลดบาลานเซอร์ยังรวมถึงการถ่ายโอน SSL ขอบคุณ.
Peter Hulsen

2
ใช่จริง คุณสามารถใช้เพื่อให้ SSL ในรูปแบบง่ายๆ ฉันแค่คิดว่าอินสแตนซ์ยังคงมีค่า DNS สาธารณะที่ผู้ใช้สามารถเข้าถึงได้โดยตรงไม่ว่าด้วยเหตุผลใดก็ตาม หากเกิดเหตุการณ์เช่นนี้คุณอาจต้องการบังคับให้ใช้ SSL ด้วย
Thomas the Tank Engine

ฉันรู้ว่าความคิดเห็นนี้ล่าช้า แต่จากความเข้าใจของฉันหากคุณต้องการใช้ชื่อโดเมนที่จดทะเบียนคุณต้องใช้ ELB เนื่องจาก EC2 IP ถือเป็น 'ไม่ถาวร' ดังนั้นจึงไม่สามารถใช้ใบรับรอง SSL ของคุณได้ ในทางกลับกันหากคุณใช้ DNS ที่ให้มาของ Amazon บางทีอาจไม่จำเป็นต้องใช้ ELB ฉันก็ไม่ได้ตรวจสอบ
hexicle

0

หนึ่งในแหล่งข้อมูลที่ดีที่สุดที่ฉันพบคือการใช้การเข้ารหัสคุณไม่จำเป็นต้องใช้ ELB หรือ cloudfront เพื่อให้อินสแตนซ์ EC2 ของคุณมี HTTPS เพียงทำตามคำแนะนำง่ายๆต่อไปนี้: มาเข้ารหัส ล็อกอินเข้าสู่เซิร์ฟเวอร์ของคุณแล้วทำตามขั้นตอนในลิงค์

นอกจากนี้ยังมีความสำคัญตามที่ผู้อื่นกล่าวไว้ว่าคุณได้เปิดพอร์ต 443 โดยการแก้ไขกลุ่มความปลอดภัยของคุณ

คุณสามารถดูใบรับรองของคุณหรือเว็บไซต์อื่น ๆ ได้โดยเปลี่ยนชื่อไซต์ในลิงค์นี้

โปรดอย่าลืมว่าใช้ได้ 90 วันเท่านั้น

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