DevOps/AWS

์„œ๋ฒ„์— HTTPS ์š”์ฒญ ๋ณด๋‚ด๊ธฐ 2ํŽธ - ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ( ๋Œ€์ƒ ๊ทธ๋ฃน, ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ)

ํ”„๋กœ๊ทธ๋ž˜๋จธ ์˜ค์›” 2023. 12. 9.

https://programmer-may.tistory.com/176

 

์„œ๋ฒ„์— HTTPS ์š”์ฒญ ๋ณด๋‚ด๊ธฐ 1ํŽธ - (feat. Mixed Content ์—๋Ÿฌ ํ•ด๊ฒฐ)

๊ฐœ์š”์ตœ์ข…์ ์œผ๋กœ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ์˜ ์ž‘์—…์ด ๋๋‚˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด๊ธฐ ์œ„ํ•ด, Vercel์— ๋ฐฐํฌ๋œ ์›น ํŽ˜์ด์ง€์—์„œ  ํ…Œ์ŠคํŠธ ์„œ๋ฒ„ EC2 ์ธ์Šคํ„ด์Šค API ์š”์ฒญ์„ ๋ณด๋ƒˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฐ๋™ํ•˜์ž๋งˆ์ž ์—๋Ÿฌ๋ฅผ ๋งŒ๋‚  ์ˆ˜ ์žˆ

programmer-may.tistory.com

 

 

 

์ „ํŽธ์˜ ๋„๋ฉ”์ธ ๋“ฑ๋ก(AWS Route 53 , ๊ฐ€๋น„์•„ )๋ถ€ํ„ฐ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰( AWS Certificate Manager(ACM)) ๊นŒ์ง€ ์•Œ์•„ ๋ดค๋‹ค. ์ด์   EC2 ๊ฒ‰์— ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ๋ฅผ ๋‘์–ด HTTPS ์š”์ฒญ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜์ž!

 

EC2  -  Target Group

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์— ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ Target Group์„ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค.

EC2 ํŽ˜์ด์ง€์—์„œ ์™ผ์ชฝ ํ•˜๋‹จ์˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ถ€๋ถ„์— ๋Œ€์ƒ ๊ทธ๋ฃน์„ ์„ ํƒํ•œ๋‹ค.

 

 

 

ํ•„์ž๋Š” ์ด๋ฏธ ๋งŒ๋“ค์–ด ๋‘์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋Œ€์ƒ๊ทธ๋ฃน์ด ํ•˜๋‚˜ ์กด์žฌํ•˜์ง€๋งŒ, ๊ณต๋ฐฑ์ธ ์ƒํƒœ๊ฐ€ ์ •์ƒ์ž„์œผ๋กœ ๋Œ€์ƒ ๊ทธ๋ฃน ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค.

 

 

 

๋Œ€์ƒ ์œ ํ˜•์€ ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•˜๊ณ , ๋Œ€์ƒ ๊ทธ๋ฃน ์ด๋ฆ„์„ ์ •ํ•ด์ค€๋‹ค.

๊ทธ๋‹ค์Œ์ด ์ค‘์š”ํ•œ๋ฐ ํ”„๋กœํ† ์ฝœ๊ณผ ํฌํŠธ์ด๋‹ค. ์—ฌ๊ธฐ์„œ์˜ ํฌํŠธ ๋ฒˆํ˜ธ๋Š” ๋‚ด๊ฐ€ ์‹คํ–‰ํ•  ์„œ๋น„์Šค์˜ ํฌํŠธ๋ฒˆํ˜ธ์ด๋‹ค์ฆ‰ ๋ณธ์ธ์ด ์„œ๋ฒ„์˜ ํฌํŠธ๋ฅผ 8080๋ฒˆ์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด 80๋ฒˆ์ด์•„๋‹Œ 8080๋ฒˆ์„ ๋„ฃ์–ด์ฃผ์–ด์•ผ ํ•œ๋‹ค!! ํ•„์ž๋Š” 80 ํฌํŠธ๋กœ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ์— 80 ํฌํŠธ๋กœ ํ•ด์ฃผ์—ˆ๋‹ค.

 

 

 

๋‹ค๋ฅธ ๊ฒƒ๋“ค์€ ์ „๋ถ€ ๊ธฐ๋ณธ ๊ฐ’์œผ๋กœ ํ•ด์ฃผ๊ณ  ์ƒํƒœ ๊ฒ€์‚ฌ ๋˜ํ•œ ๊ตณ์ด ์•ˆํ•ด์ค˜๋„ ๋œ๋‹ค. Health checks ๋ถ€๋ถ„์€ ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ„๋‹จํ•œ ์„œ๋ฒ„ ์š”์ฒญ์„ ๋ณด๋‚ด์„œ ์ •์ƒ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ถ€๋ถ„์ด๋‹ค. ๊ด€๋ จ api๋ฅผ ๊ตณ์ด ์•ˆ๋งŒ๋“ค์–ด๋„ ์ƒ๊ด€์—†์œผ๋‹ˆ ๋‹ค์Œ์„ ๋ˆŒ๋Ÿฌ ๋„˜์–ด๊ฐ„๋‹ค.

 

 

 

์ ์šฉํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ๊ณ  ์ž์‹ ์ด ์•ž์„œ ์ •ํ•œ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ ๊ณ  ์•„๋ž˜์— ๋ณด๋ฅ˜์ค‘์ธ ๊ฒƒ์œผ๋กœ ํฌํ•จ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋Œ€์ƒ ๋ณด๊ธฐ์— ํ•ด๋‹น ์ธ์Šคํ„ด์Šค๊ฐ€ ๋“ฑ๋ก ๋๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.  ํ›„์— ๋งˆ์ง€๋ง‰์— ๋Œ€์ƒ ๊ทธ๋ฃน ์ƒ์„ฑ์„ ๋ˆ„๋ฅธ๋‹ค.

 

 

EC2 - Load Balancer

๋‹ค์Œ์€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ์„ค์ •ํ•  ์ฐจ๋ก€์ด๋‹ค.

 

ํ•„์ž๋Š” ์ด๋ฏธ ๋งŒ๋“ค์–ด์„œ ํ•˜๋‚˜๊ฐ€ ์žˆ์ง€๋งŒ ๊ณต๋ž€์ด ์ •์ƒ์ด๊ธฐ์— ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์ƒ์„ฑ์„ ๋ˆ„๋ฅธ๋‹ค.

 

 

 

 

๋งจ ์™ผ์ชฝ์˜ Application Load Balancer๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค. 

 

 

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์˜ ์ด๋ฆ„์„ ์ ๊ณ  ๋„คํŠธ์›Œํฌ ๋งคํ•‘์—๋Š”  ์ž์‹ ์˜ EC2 ์ธ์Šคํ„ด์Šค์˜ ๊ฐ€์šฉ์˜์—ญ์ด ๋ฐ˜๋“œ์‹œ ํฌํ•จ ๋˜์–ด์•ผ ํ•œ๋‹ค.

 

 

๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑํ•  EC2 ์ธ์Šคํ„ด์Šค์˜ ์„ธ๋ถ€์ •๋ณด์—์„œ ๋„คํŠธ์›Œํ‚น ํƒญ์—์„œ ๊ฐ€์šฉ์˜์—ญ์„ ํ™•์ธ ํ•œ๋‹ค. 2c ์ด๋ฏ€๋กœ 2a ์™€ 2c ์„ ๋งคํ•‘ํ•ด์ฃผ์—ˆ๋‹ค.

 

 

 

๋ณด์•ˆ๊ทธ๋ฃน์€ ๋ณธ์ธ์˜ ์ธ์Šคํ„ด์Šค์™€ ๊ฐ™์€ ๋ณด์•ˆ ๊ทธ๋ฃน์€ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.
(์ฃผ์˜: ๋ณด์•ˆ ๊ทœ์น™์— https์ด ๋“ฑ๋ก๋˜์–ด ์žˆ์–ด์•ผํ•œ๋‹ค.)

 

 

 

 

๋ฆฌ์Šค๋„ˆ ๋ฐ ๋ผ์šฐํŒ…์€ ๋Œ€์ƒ ๊ทธ๋ฃน ์„ ํƒ์„ ๋ˆŒ๋Ÿฌ ์•„๊นŒ ๋งŒ๋“  ๋Œ€์ƒ ๊ทธ๋ฃน์œผ๋กœ ์„ค์ • ํ•ด์ค€๋‹ค.

 

 

๋ฆฌ์Šค๋„ˆ ์ถ”๊ฐ€๋ฅผ ๋ˆŒ๋Ÿฌ HTTPS  ํ”„๋กœํ† ์ฝœ 443 ํฌํŠธ๋กœ ์š”์ฒญ์ด ์˜ค๋ฉด ๋Œ€์ƒ ๊ทธ๋ฃน์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰์‹œ์ผœ ์ค„ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

 

 

 

HTTPS ํ”„๋กœํ† ์ฝœ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์„ค์ •ํ•ด์ฃผ๋ฉด ์ด๋ ‡๊ฒŒ ๋ณด์•ˆ ๋ฆฌ์Šค๋„ˆ ์„ค์ •์ด ๋‚˜์˜จ๋‹ค. ์šฐ๋ฆฐ ACM ์—์„œ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰์„ ํ•ด์ฃผ์—ˆ์œผ๋ฏ€๋กœ ์ธ์ฆ์„œ ์†Œ์Šค๋Š” ACM์—์„œ ๋ฅผ ๋ˆ„๋ฅด๊ณ 

์ธ์ฆ์„œ ์„ ํƒ์—์„œ ๋ฐœ๊ธ‰ ๋ฐ›์€ ์ธ์ฆ์„œ๋ฅผ ์„ ํƒํ•ด์ค€๋‹ค.

 

๊ทธ ํ›„์— ๋งจ ์•„๋ž˜ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋ฅผ ๋งŒ๋“ค์–ด ์ค€๋‹ค.

 

AWS Route53

์ด์   ๋„๋ฉ”์ธ ์„ค์ •๋งŒ์ด ๋‚จ์•˜๋‹ค.

Route53์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ๋„๋ฉ”์ธ ์ด๋ฆ„์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์ค€๋‹ค.

 

 

๋ณ„์นญ์„ ํ™œ์„ฑํ™” ํ•˜๊ณ 

์—”๋“œํฌ์ธํŠธ ์„ ํƒ ์—๋Š” ALB ์— ๋Œ€ํ•œ ๋ณ„์นญ

๋ฆฌ์ „ ์„ ํƒ ์—๋Š” ์ž์‹ ์˜ ๋ฆฌ์ „์„ ์„ ํƒํ•˜๊ณ 

๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ ์„ ํƒ์—๋Š” ๋ฐฉ๊ธˆ ๋งŒ๋“  ๋กœ๋“œ๋ฐธ๋Ÿฐ์Šค๋ฅผ ์„ ํƒํ•œ๋‹ค.

๋ฐฑ์—”๋“œ ๋„๋ฉ”์ธ์„ ์œ„ํ•ด ๋ ˆ์ฝ”๋“œ ์ด๋ฆ„์—๋Š” api๋ฅผ ๋ถ™์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ ์ค€๋‹ค.

 

 

๊ทธ๋Ÿผ ์ƒˆ๋กœ ์ƒ์„ ๋œ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค ์œ ํ˜•์€ A์ด๊ณ  ์•„๊นŒ ๋ ˆ์ฝ”๋“œ์ด๋ฆ„์œผ๋กœ ์ •ํ•ด์ค€ api. ๊ฐ€ ๋ถ™์€, ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ… ๋Œ€์ƒ์œผ๋กœ๋Š” ๋งŒ๋“ค์–ด์ค€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

์ด์   ํฌ์ŠคํŠธ ๋งจ์œผ๋กœ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋ฉด

https://api.{๋„๋ฉ”์ธ๋ช…} ์œผ๋กœ ์„œ๋ฒ„ ํ†ต์‹ ์„ ํ•˜์‹œ๋ฉด ์ž˜๋˜๋Š”๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํ•„์ž์™€ ๋‹ค๋ฅด๊ฒŒ ํ–ˆ๋‹ค๋ฉด https://{๋ ˆ์ฝ”๋“œ ์ด๋ฆ„}/{API ์—”๋“œํฌ์ธํŠธ} ๋กœ https ์š”์ฒญ์œผ๋กœ๋„ EC2 ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

 

๋Œ“๊ธ€