DevOps/AWS

[AWS] CloudFront ์™€ Route53 ๋ฅผ ํ†ตํ•ด S3 ๊ฐœ์ธ ๋„๋ฉ”์ธ์— HTTPS ์ ์šฉํ•˜๊ธฐ

REVI1337 2024. 1. 10. 23:42

๐Ÿ”ฅ ๋“ค์–ด๊ฐ€๊ธฐ ์•ž์„œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์—๋Š” S3 ๋„๋ฉ”์ธ์— HTTPS ๋ฅผ ์„ค์ •ํ•˜๋Š”๊ฒƒ์„ ๋ชฉํ‘œ๋กœํ•˜๋ฉฐ ์ด๋ฅผ ์œ„ํ•ด CloudFront ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ CloudFront ๋ฅผ ํ†ตํ•ด S3 ์— HTTPS ๋ฅผ ์„ค์ •ํ•˜๋ ค๋ฉด ์ธ์ฆ์„œ๊ฐ€ ํ•„์š”ํ•œ๋ฐ ์ด ์ธ์ฆ์„œ๊ฐ€ Region ์ด ๋ฏธ๊ตญ ๋™๋ถ€(๋ฒ„์ง€๋‹ˆ์•„) ์ธ ์‚ฌ์šฉ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ S3 ๋ฒ„ํ‚ท์ด ๋ฒ„์ง€๋‹ˆ์•„ ์— ์œ„์น˜ํ•ด์žˆ๊ณ  ํผ๋ธ”๋ฆญ ์•ก์„ธ์Šค ํ—ˆ์šฉ์œผ๋กœ ๋˜์–ด์žˆ์–ด์•ผ ํ•œ๋‹ค.


๐Ÿ”ฅ Certificate Manager ์— ์ธ์ฆ์„œ ์š”์ฒญ

์ฒซ๋ฒˆ์งธ๋กœ Certificate Manager ์— ๋“ค์–ด๊ฐ€์„œ ์ธ์ฆ์„œ๋ฅผ ์š”์ฒญํ•ด์ค€๋‹ค. ๋‹ค์‹œํ•œ๋ฒˆ ๋งํ•˜์ง€๋งŒ ํ˜„์žฌ ๋ฒ„์ง€๋‹ˆ์•„ ๋ถ๋ถ€ ์—ฌ์•ผ ํ•œ๋‹ค.

img.png

ํผ๋ธ”๋ฆฟ ์ธ์ฆ์„œ ์š”์ฒญ์„ ๋ˆŒ๋Ÿฌ์ค€ ๋‹ค์Œ

img_1.png

์ธ์ฆ์„œ์— ํ•˜๋‚˜ ์ด์ƒ์˜ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ์ œ๊ณตํ•ด์ค€๋‹ค. ํ•„์ž๋Š” www.revi1337.com ์„ ์ž…๋ ฅํ•˜์˜€๋‹ค.

img_2.png

๊ฒ€์ฆ ๋ฐฉ๋ฒ•๊ณผ ํ‚ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ทธ๋Œ€๋กœ ๋‘๊ณ  ์ธ์ฆ์„œ ์š”์ฒญ์„ ์™„๋ฃŒํ•ด์ค€๋‹ค.

img_3.png

์ธ์ฆ์„œ ์š”์ฒญ์„ ์™„๋ฃŒํ•˜๊ณ ๋‚˜๋ฉด ๊ฒ€์ฆ ๋Œ€๊ธฐ์ค‘ ์ด๋ผ๋Š” ์ƒํƒœ๊ฐ€ ๋œจ๊ฒŒ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ Route 53 ์—์„œ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ ๋ฅผ ๋ˆŒ๋Ÿฌ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๋ฉด

img_4.png

์•„๋ž˜์™€ ๊ฐ™์ด ์ƒํƒœ๊ฐ€ ์„ฑ๊ณต์ด๋ผ๊ณ  ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.

img_5.png

ํ•ด๋‹น ๊ณผ์ •๊นŒ์ง€๊ฐ€ ์ธ์ฆ์„œ ์š”์ฒญ ๊ณผ์ •์˜ ๋์ด๋‹ค.


๐Ÿ”ฅ CloudFront ๋ฐฐํฌ

์ด์ œ CloudFront ๋กœ ์ด๋™ํ•˜์—ฌ ๋ฐฐํฌ ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค. ์›๋ณธ ๋„๋ฉ”์ธ์— S3 ๋ฅผ ์„ ํƒํ•˜๊ณ  ๊ทธ๋ฆฌ๊ณ  HTTP ๋งŒ ํ•ด๋‹น์„ ์„ ํƒํ•ด์ฃผ์ž. ์ด ๋•Œ ์›น์‚ฌ์ดํŠธ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ์›น์‚ฌ์ดํŠธ ์—”๋“œํฌ์ธํŠธ๋Š” URL ์— s3-website ๊ฐ€ ๋“ค์–ด๊ฐ€์žˆ๋Š” ์ฃผ์†Œ๋ฅผ ๋ช…์‹œํ•ด์ฃผ์–ด์•ผ ์ •์ƒ์ ์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค.

ClountFront ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์™ธ๋ถ€๋ง์„ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ๋งŒ HTTPS ๋กœ ํ†ต์‹ ํ•˜๊ณ  ๊ทธ ๋’ท๋‹จ์˜ EC2 ๋‚˜ S3 ์—์„œ๋Š” HTTP ๋ฅผ ์ด์šฉํ•จ์œผ๋กœ์„œ EC2 ๋‚˜ S3 ๋Š” HTTPS ๋ฅผ ์œ„ํ•œ ๋ณ„๋„์˜ ์ž‘์—…์ด ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ HTTP ๋ฅผ ์„ ํƒํ•ด์ค€๋‹ค.

img_6.png

์›๋ณธ ์•ก์„ธ์Šค์™€ Origin Shield ๋Š” ๊ณต๊ฐœ, ์•„๋‹ˆ์˜ค ๋กœ ๋‘”๋‹ค. ์ฐธ๊ณ ๋กœ ์›๋ณธ ์•ก์„ธ์Šค ์ œ์–ด(๊ถŒ์žฅ) ๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋˜๋ฉด IAM ๊ณผ ๋ฒ„ํ‚ท์ •์ฑ…์„ ์—…๋ฐ์ดํŠธ ํ•จ์œผ๋กœ์„œ S3 ๋ฒ„ํ‚ท ์•ˆ์— ์žˆ๋Š” ์ฝ˜ํ…์ธ ๋“ค์„ CloudFront ๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

img_7.png

๊ฒฝ๋กœ ํŒจํ„ด ์€ ์–ด์งœํ”ผ ์šฐ๋ฆฌ๊ฐ€ ์ˆ˜์ •ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋Œ€๋กœ ๋‘”๋‹ค . ๋˜ํ•œ ์ฝ˜ํ…์ธ ๋ฅผ Origin ์œผ๋กœ ๋ณด๋‚ผ ๋•Œ ์••์ถ•ํ•ด์„œ ๋ณด๋‚ผ์ง€ ์•„๋‹์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ์ž๋™์œผ๋กœ ๊ฐ์ฒด ์••์ถ• ์€ Yes ๋ฅผ ์„ ํƒํ•ด์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ทฐ์–ด ํ”„๋กœํ† ์ฝœ ์ •์ฑ…
์€ Redirect HTTP to HTTPS ๋ฅผ ์„ ํƒํ•ด์ค€๋‹ค. ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ฒดํฌํ•˜๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ HTTP ๋กœ ์ ‘๊ทผํ–ˆ์„ ๋•Œ ์ž๋™์œผ๋กœ HTTPS ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์…˜์‹œํ‚ค๊ฒŒ ๋œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ API ๋ฅผ ์š”์ฒญํ• ๋•Œ ํ—ˆ์šฉ๋œ HTTP Method ๋ฅผ ์ง€์ •ํ•˜๋Š” ํ—ˆ์šฉ๋œ HTTP ๋ฐฉ๋ฒ• ์€ ์žฌ๋Ÿ‰์— ๋งž๊ฒŒ ์ƒ๊ฐํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋ทฐ์–ด ์•ก์„ธ์Šค ์ œํ•œ์—๋Š” No ๋ฅผ ์„ ํƒํ•ด์ค€๋‹ค. Yes ๋กœ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” CloudFront ์— ์„œ๋ช…๋œ ์ฟ ํ‚ค ํ˜น์€ ์„œ๋ช…๋œ URL ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ์ด๋Š” EC2 ์— ์ ‘๊ทผํ• ๋•Œ PEM ํ‚ค๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ๊ณผ ๋น„์Šทํ•œ ๊ฐœ๋…์ด๋ฉฐ ์ด๋Š” ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›์€ ์‚ฌ์šฉ์ž๋งŒ ์ฝ˜ํ…์ธ ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

img_8.png

์บ์‹œ ํ‚ค ๋ฐ ์›๋ณธ ์š”์ฒญ ๋ฅผ ํ†ตํ•ด์„œ ์บ์‹œ ์ •์ฑ… ์— ๋Œ€ํ•ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ๋ชจ๋‘ ๋””ํดํŠธ๋กœ ๋‘”๋‹ค.

img_9.png

๋‹ค์Œ์œผ๋กœ ํ•จ์ˆ˜ ์—ฐ๊ฒฐ. ์ฆ‰ ๋žŒ๋‹ค ์—ฐ๊ฒฐ์„ค์ •์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ๋žŒ๋‹ค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ๋ฌด์—‡๋ณด๋‹ค ์„ ํƒ์‚ฌํ•ญ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋„˜์–ด๊ฐ€ ์ค€๋‹ค. ํ•ด๋‹น ์„ค์ •์„ ํ†ตํ•ด CloudFront ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ ๋ฅผ ํ†ตํ•ด CloudFront Functions ๋ฐ Lambda@Edge ๋ฅผ ์‚ฌ์šฉ ๋ฐ ํŠธ๋ฆฌ๊ฑฐ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

img_10.png

WAF ๋Š” ๋น„ํ™œ์„ฑํ™” ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค.

img_11.png

์„ค์ • ๋ถ€๋ถ„์€ ์ข€ ์ค‘์š”ํ•˜๋‹ค. ๊ฐ€๊ฒฉ๋ถ„๋ฅ˜ ์˜ต์…˜์— ๋”ฐ๋ผ Edge Location ์ด ์ „์„ธ๊ณ„์— ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์ƒ์„ฑ๋ ์ง€ ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. Edge Location ์ด ๋งŽ์•„์ง€๋ฉด ์•ก์„ธ์Šค ์†๋„๋Š” ๋นจ๋ฆฌ์ง€๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ ์ถ”๊ฐ€์š”๊ธˆ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ „ ์„ธ๊ณ„ ์‚ฌ์šฉ์ž๋“ค์„ ๋Œ€์ƒ์œผ๋กœ ์„œ๋น„์Šคํ•  ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ๋Š” ์ ๋‹นํžˆ ๋ถ๋ฏธ, ์œ ๋Ÿฝ, ์•„์‹œ์•„, ์ค‘๋™ ๋งŒ ์„ ํƒํ•ด์ค€๋‹ค. ๋˜ํ•œ ์ด์ „ ์›๋ณธ ์„ค์ • ์—์„œ ์›๋ณธ ๋„๋ฉ”์ธ์— S3 ์ •์  ์›น์‚ฌ์ดํŠธ ํ˜ธ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ์ ์–ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์ฒด ๋„๋ฉ”์ธ ์ด๋ฆ„(CNAME) ์—์„œ๋Š” ์‹ค์ œ ์‚ฌ์šฉํ•  ์‚ฌ์ดํŠธ์˜ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค. ํ•„์ž๋Š” ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ• ๋•Œ ๋ช…์‹œํ•ด์ฃผ์—ˆ๋˜ www.revi1337.com ์ฃผ์†Œ๋ฅผ ๋ช…์‹œํ•ด์ฃผ์—ˆ๋‹ค. ์ฐธ๊ณ ๋กœ CNAME ์„ค์ •์€ ๊ตฌ๋งคํ•œ ๋„๋ฉ”์ธ์ด ์—†์–ด๋„ CloudFront ์—์„œ ์ž„์˜์˜ ๋„๋ฉ”์ธ ์ฃผ์†Œ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋„˜์–ด๊ฐ€์ฃผ์–ด๋„ ๋œ๋‹ค.

img_12.png

์ด์ œ ์—ฌ๊ธฐ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ SSL ์ธ์ฆ์„œ์—๋Š” ์ดˆ๋ฐ˜์— ๋ฐœ๊ธ‰๋ฐ›์€ SSL ์ธ์ฆ์„œ๋ฅผ ์„ ํƒํ•ด์ค€๋‹ค. ์ธ์ฆ์„œ๋ฅผ ๋ฒ„์ง€๋‹ˆ์•„์—์„œ ๋ฐœ๊ธ‰๋ฐ›์ง€์•Š์•˜์œผ๋ฉด ์„ ํƒ์กฐ์ฐจ ๋˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€์›๋˜๋Š” HTTP ๋ฒ„์ „์€ ๋” ๋น ๋ฅธ ๋„คํŠธ์›Œํฌ ์†๋„๋ฅผ ์œ„ํ•ด HTTP/3 ๋ฅผ ์„ ํƒํ•ด์ค€๋‹ค.

img_13.png

๋งˆ์ง€๋ง‰์œผ๋กœ ํ‘œ์ค€๋กœ๊น…์€ ํ•ด์ œํ•˜๊ณ  IPv6 ๋Š” ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋ฐฐํฌ ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด CloudFront ๊นŒ์ง€ ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค.

img_14.png

์ด์ œ ๋ฐฐํฌ๋œ CloudFront ์— ๋“ค์–ด๊ฐ€์„œ ๋ฐฐํฌ ๋„๋ฉ”์ธ ์ด๋ฆ„ ์„ ํ™•์ธ ํ›„ ํ•ด๋‹น ์ฃผ์†Œ๋กœ ์ ‘๊ทผํ•˜๋ฉด ๋ฐฐํฌ๋œ CloudFront ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

img_16.png

ํ•˜์ง€๋งŒ ์ด๊ฒŒ ๋์ด ์•„๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์œ ์ €๊ฐ€ ์ ‘์†ํ•˜๋Š” ๋„๋ฉ”์ธ์€ ๊ฒฐ๊ตญ Route 53 ์— ๋“ฑ๋ก๋œ ์ฃผ์†Œ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฉ๊ธˆ ๋ฐฐํฌํ•œ CloudFront ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ Route 53 ์— ๋“ฑ๋ก๋œ ๋„๋ฉ”์ธ์„ค์ • ์„ ์ž‘์—…ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.


๐Ÿ”ฅ Route 53 ์—์„œ ๊ธฐ์กด ๋ ˆ์ฝ”๋“œ ๋ณ€๊ฒฝ

์ด์ œ CloudFront ์˜ ์ฃผ์†Œ๊ฐ€ ์•„๋‹Œ, ๋„๋ฉ”์ธ์ฃผ์†Œ๋ฅผ ์ณค์„๋•Œ HTTPS ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. AWS ์ฝ˜์†”์—์„œ Route 53 > ํ˜ธ์ŠคํŠธ ์˜์—ญ ๋กœ ๋„˜์–ด๊ฐ€ ๋ณธ์ธ์ด ์ƒ์„ฑํ•œ ํ˜ธ์ŠคํŒ… ์˜์—ญ ์„ ์„ ํƒ ํ›„ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค.

์ด์ œ ๋ ˆ์ฝ”๋“œ ์ด๋ฆ„์„ ์„ค์ •ํ•ด์ฃผ๊ณ  ๋ณ„์นญ ์„ ํ™œ์„ฑํ™”์‹œ์ผœ์ค€๋‹ค. ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ… ๋Œ€์ƒ ์—์„œ CloudFront ๋ฐฐํฌ์— ๋Œ€ํ•œ ๋ณ„์นญ์„ ์„ ํƒํ•ด์ฃผ๊ณ , ์ด์ „์— ๋งŒ๋“  CloudFront ๋ฐฐํฌ ์ฃผ์†Œ ๋ฅผ ์„ ํƒํ•ด์ฃผ๊ณ  ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋์ด๋‹ค.

img_17.png


๐Ÿ”ฅ HTTPS ๋™์ž‘ ํ™•์ธ

์ด์ œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐฉ๊ธˆ ์„ค์ •ํ•œ ๋„๋ฉ”์ธ์ฃผ์†Œ๋กœ ์ ‘์†ํ•ด๋ณด๋ฉด Https ๊ฐ€ ์ž˜ ๋™์ž‘ํ•˜๋Š”๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

img_18.png


๐Ÿ”ฅ ๊ฐœ์„ ํ• ์ 

์‚ฌ์‹ค ์ž˜ ๋™์ž‘ํ•˜์ง€๋งŒ ์•„์‰ฌ์šด์ ์ด๋ž„๊นŒ.. ๊ฐœ์„ ํ•ด์•ผํ•  ๋ถ€๋ถ„์ด ๋‚จ์•„์žˆ๋‹ค. ๋ฐ”๋กœ www ๋ฅผ ์น˜์ง€ ์•Š๊ณ  revi1337.com ๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๊ธฐ๋Œ€ํ–ˆ๋˜ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ค์ง€์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ์—๋Š” ํ•ด๋‹น ๋ถ€๋ถ„์„ ๊ฐœ์„ ํ•ด๋ณด๋„๋ก ํ•˜์ž.