[Update] การตั้งค่า Free SSL กับ DNS ใน CloudFront โดยใช้ ACM กับ Route 53

[Update] การตั้งค่า Free SSL กับ DNS ใน CloudFront โดยใช้ ACM กับ Route 53

สอนการตั้งค่า SSL บน Amazon CloudFront โดยใช้ AWS Certificate Manager (ACM) และจัดการโดเมนผ่าน Route 53 ครอบคลุมตั้งแต่สร้าง Certificate, ตั้งค่า CloudFront จนถึงการชี้ DNS ให้ใช้งานได้จริง

การเปลี่ยนชื่อ Domain name (DNS) เว็บไซต์ด้วย Route 53 จำเป็นต้องทำการ Request SSL Certificate และกำหนดค่า DNS ให้ถูกต้อง ซึ่ง AWS มีเครื่องมืออย่าง AWS Certificate Manager (ACM) และ Amazon Route 53 ที่ช่วยให้การตั้งค่าเหล่านี้เป็นเรื่องง่ายและรวดเร็ว โดยครั้งนี้จะพาไปรู้จักขั้นตอนการขอและติดตั้ง SSL ผ่าน ACM และการตั้งค่า DNS ด้วย Route 53 พร้อมคำแนะนำแบบละเอียด เพื่อให้สามารถนำไปปรับใช้และทำงานได้จริง

Amazon Route 53 คืออะไร

Amazon Route 53 คือ บริการ DNS (Domain Name System) ที่สามารถกระจายไปทั่วโลกเนื่องจากสามารถทำงานร่วมกับบริการอื่นๆ ของ AWS ได้ อีกทั้งในกรณีที่ทำการสร้าง Domain Server จากที่อื่น คุณก็ยังสามารถใช้งาน Amazon Route 53 ในการเปลี่ยนชื่อ Domain Name ได้เช่นเดียวกัน
diagram-dns-route53

สิ่งที่ต้องมี

Amazon CloudFront

・สร้าง Distribution ใน CloudFront สำหรับแสดงผลเว็บไซต์ที่สร้างจาก EC2 แล้ว

ดูตัวอย่างได้ที่ลิงก์บทความด้านล่างนี้
https://dev.classmethod.jp/articles/how-to-display-the-website-on-ec2-with-cloudfront-v2/

เป้าหมายการสร้าง Route 53 และ SSL Certificate

แผนผังนี้แสดงการทำงานร่วมกันของ Amazon Route 53, CloudFront และ AWS Certificate Manager เพื่อให้เว็บไซต์สามารถเชื่อมต่อผ่าน HTTPS ได้อย่างปลอดภัย โดย Route 53 ทำหน้าที่จัดการการชี้โดเมน ขณะที่ SSL Certificate จาก ACM ใช้เข้ารหัสข้อมูลระหว่างผู้ใช้และ CloudFront ก่อนส่งต่อไปยังเซิร์ฟเวอร์ EC2
diagram-route53-acm

การเปลี่ยน Domain name ด้วย Route 53

ก่อนอื่นให้คัดลอก Distribution domain name จากหน้า Distribution ใน CloudFront เพื่อนำไปเปลี่ยนเป็นชื่อที่ต้องการ
ในตัวอย่างนี้จะใช้เป็นชื่อ tinnakorn-al2023.train.cmthai.click
syp2ojyae1gbq2nzoeq6

ไปที่ช่อง Search แล้วค้นหาและเลือก Route 53
search-route53

เลือก Hosted zones จากเมนูด้านซ้าย แล้วคลิก Hosted zone name ของเรา ครั้งนี้คือ train.cmthai.click
menu-hosted_zone

แล้วคลิก Create record
button-create-record

ตั้งค่า Quick create record ตามนี้
・Record name: tinnakorn-al2023 (ป้อนชื่อที่ต้องการ)
・คลิกปุ่ม Alias ให้เลื่อนมาด้านขวาและจะเปลี่ยนเป็นสีฟ้าเพื่อเปิดการใช้งาน
・เลือก Route traffic to: Alias to CloudFront distribution
・วาง Distribution domain name ที่คัดลอกมาลงในช่อง "Route traffic to" เช่น xxxxxxxxxxxxxx.cloudfront.net
・คลิก Create records
create_record_cf-1

ตอนนี้เราได้เปลี่ยนชื่อ Distribution domain name ด้วย Route 53 เสร็จเรียบร้อยแล้ว
มาทดสอบ URL นี้กันโดยคัดลอก Record name เตรียมไว้ ครั้งนี้คือ tinnakorn-al2023.train.cmthai.click
create_record_cf-2

แล้วเปิด URL ตามด้านล่างนี้

https://[Record name]

จะเห็นว่าแสดงเป็นหน้าจอ "403 ERROR" เนื่องจากเราต้อง Request SSL Certificate ในบริการ AWS Certificate Manager ในขั้นตอนถัดไปก่อน
create_record_cf-3

AWS Certificate Manager คืออะไร

images
AWS Certificate Manager คือ บริการที่ช่วยให้คุณสามารถเตรียมใช้งาน จัดการ และปรับใช้ใบรับรอง Secure Sockets Layer/Transport Layer Security (SSL/TLS) แบบสาธารณะหรือแบบส่วนตัวเพื่อใช้กับบริการของ AWS อีกทั้งค่าธรรมเนียมในการใช้งานฟรี และมีการอัปเดตอัตโนมัติ ทำให้การจัดการง่ายขึ้น

การ Request SSL Certificate ด้วย AWS Certificate Manager

ก่อนอื่นให้คัดลอก Record name จากหน้าจอ Hosted zone บน Route 53 เพื่อนำไปใช้ในการ Request SSL Certificate
โดยตัวอย่างนี้จะเป็นชื่อ tinnakorn-al2023.train.cmthai.click
create_record_cf-2

ไปที่ช่อง Search แล้วค้นหาและเลือก Certificate Manager
search_acm-202508

เลือกรีเจี้ยน N. Virginia

select_n-virginia_region

เลือก List certificates แล้วคลิก Request ด้านขวา
select_menu_and_button_request

คลิก Next
request_certificate_route53_cf-1

ป้อน Fully qualified domain name ที่คัดลอกเตรียมไว้ เช่น tinnakorn-al2023.train.cmthai.click

request_certificate_route53_cf-2

หรือจะ Request SSL Certificate ที่รองรับ Record Name ทั้งหมดที่สร้างไว้ใน Hosted Zone ที่ได้ลงทะเบียนไว้ก็ได้

Fully qualified domain name
*.train.cmthai.click
train.cmthai.click

การทำแบบนี้จะทำให้สามารถสร้าง Record Name ใน Hosted Zone บน Route 53 ได้โดยไม่ต้อง Request SSL Certificate ใน AWS Certificate Manager ทุกครั้ง ดังนั้นในครั้งนี้เราจะทำตามขั้นตอนนี้

จากนั้นเลื่อนลงไปด้านล่างสุด แล้วคลิก Request
request_certificate_route53_cf-3

คลิก Create records in Route 53
request_certificate_route53_cf-4

คลิก Create records

request_certificate_route53_cf-5

แล้วจะเข้ามาที่หน้าจอ Request SSL Certificate โดยจะมี Status แสดงเป็น Pending validation
request_certificate_route53_cf-6

จากนั้นคลิก List certificates แล้วตรวจสอบ Status ของ Certificate ที่สร้างขึ้น
แล้วรอให้ Status เป็น Issued เพียงเท่านี้การ Request SSL Certificate ก็เสร็จสิ้น
request_certificate_route53_cf-7

มาที่หน้าจอ Hosted zone ใน Route 53 จะเห็นว่า CNAME ถูกสร้างขึ้นที่นี่
request_certificate_route53_cf-8

การเชื่อมต่อ SSL certificate ใน CloudFront

ก่อนอื่น ให้ไปที่หน้าจอ Hosted Zone ที่ได้ลงทะเบียนไว้ใน Route 53 แล้วคัดลอก Record Name ที่กำหนดไว้สำหรับ CloudFront อีกครั้ง
※ครั้งนี้จะใช้ Record Name ชื่อ tinnakorn-al2023.train.cmthai.click เพื่อเชื่อมต่อ SSL Certificate กับ CloudFront
create_record_cf-2

ไปที่หน้าจอ CloudFront แล้วคลิก Distributions จากเมนูด้านซ้าย และคลิก ID
connect_acm_in_cf-1

คลิก Edit ในหัวข้อ Settings
connect_acm_in_cf-2

แล้วตั้งค่าตามนี้
Alternate domain name (CNAME) - optional: คลิก Add item แล้ววาง Record name ที่ คัดลอกมาจากหน้าจอ Hosted zone ใน Route 53 (ครั้งนี้คือ tinnakorn-al2023.train.cmthai.click)
Custom SSL certificate - optional: เลือก SSL certificate ที่สร้างเตรียมไว้ (ครั้งนี้คือ *.train.cmthai.click)
・เลื่อนลงมาด้านล่างสุด แล้วคลิก Save changes
connect_acm_in_cf-3

แล้วจะเห็นว่า "Alternate domain names" และ "Custom SSL certificate" ถูกเพิ่มเข้ามาแล้ว
ในส่วนของ "Alternate domain names" จะใช้เป็น URL สำหรับแสดงหน้าเว็บ ดังนั้นให้คัดลอกเก็บไว้ (ครั้งนี้คือ tinnakorn-al2023.train.cmthai.click)

จากนั้นตรวจสอบ Last modified จะเห็นสถานะว่าเป็น Deploying
ให้รอสักครู่จนกว่า Last modified จะเปลี่ยนเป็นวันที่ปัจจุบัน
connect_acm_in_cf-4

กลับมาที่หน้าจอเว็บไซต์ แล้ว Reload อีกครั้ง จะเห็นว่าสามารถแสดงหน้าเว็บไซต์ได้แล้ว
connect_acm_in_cf-5

หรือถ้าได้ทำวิธีติดตั้ง PHP 8.2 และ Apache ใน Amazon Linux 2023 บน EC2 นี้ไว้แล้ว สามารถเปิด URL ตามนี้ได้เช่นกัน

https://[Record name]/test.php

connect_acm_in_cf-6

สรุป

การตั้งค่า SSL บน CloudFront ด้วย ACM และการกำหนด DNS ผ่าน Route 53 เป็นขั้นตอนสำคัญที่ช่วยเพิ่มความปลอดภัย เสถียรภาพ และภาพลักษณ์ความเป็นมืออาชีพให้กับเว็บไซต์ ทั้งกระบวนการสามารถทำได้ผ่าน AWS Management Console โดยไม่ซับซ้อน

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP (Tinnakorn Maneewong) จากบริษัท Classmethod (Thailand) ครับ !

บทความที่เกี่ยวข้อง

この記事をシェアする

facebookのロゴhatenaのロゴtwitterのロゴ

© Classmethod, Inc. All rights reserved.