[AWS] Https ์ ์ฉํ๊ธฐ
๐ ๋ค์ด๊ฐ๋ฉฐ
์ด๋ฒ ๊ธ์์๋ AWS์์ HTTPS๋ฅผ ์ ์ฉํ๋ ์ ์ฒด ๊ณผ์ ์ ์ ๋ฆฌํ๋ค. Route53(๋๋ฉ์ธ) + ACM(์ธ์ฆ์) + ALB(๋ก๋๋ฐธ๋ฐ์)๋ฅผ ์กฐํฉํด, ์คํ๋ง๋ถํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ ํ ๋ณด์ ํต์ ์ ๋ถ์ธ๋ค.
์ ALB๋ก HTTPS๋ฅผ ์ ์ฉํ๋? EC2๋ง๋ค ์ธ์ฆ์๋ฅผ ์ค์นยท๊ฐฑ์ ํ๋ ๋์ , ALB์์ HTTPS๋ฅผ ์ข ๋ฃ(SSL ์คํ๋ก๋ฉ)ํ๋ฉด ์ธ์ฆ์ ๊ด๋ฆฌ๊ฐ ํ ๊ณณ์ผ๋ก ๋ชจ์ธ๋ค. ACM ์ธ์ฆ์๋ ๋ฌด๋ฃ์ด๊ณ ์๋ ๊ฐฑ์ ๋๋ฏ๋ก ์ด์ ๋ถ๋ด์ด ํฌ๊ฒ ์ค์ด๋ ๋ค.
1. ์ ์ฒด ํ๋ฆ
๋๋ฉ์ธ โ ์ธ์ฆ์ โ ๋์ ๊ทธ๋ฃน โ ๋ก๋๋ฐธ๋ฐ์ โ ๋ ์ฝ๋ ์์ผ๋ก ์ฐ๊ฒฐํ๋ค.
flowchart LR
R53["๐งญ Route53<br/>(๋๋ฉ์ธยท๋ ์ฝ๋)"]
ACM["๐ ACM<br/>(SSL ์ธ์ฆ์)"]
ALB["โ๏ธ ALB<br/>(HTTPS 443)"]
TG["๐ฏ ๋์ ๊ทธ๋ฃน<br/>(HTTP 9090)"]
EC2["๐ป EC2<br/>(Spring Boot)"]
R53 --> ALB
ACM -.๋ฐฐํฌ.-> ALB
ALB --> TG --> EC2
2. ํธ์คํ ์์ญ ์์ฑ & ๋ค์์๋ฒ ์ฐ๊ฒฐ
Route53์์ ํธ์คํ ์์ญ์ ์์ฑํ๋ค. ๋๋ฉ์ธ(๊ฐ๋น์ ๊ตฌ๋งค)์ ์ ๋ ฅํ๊ณ ํผ๋ธ๋ฆญ ํธ์คํ ์์ญ์ผ๋ก ๋ง๋ ๋ค, EC2 ํผ๋ธ๋ฆญ IP(EIP)๋ก A ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
NS ๋ ์ฝ๋์ ๋ค์์๋ฒ 4๊ฐ๋ฅผ ๋ณต์ฌํด, ๋์ ์จ์ (.)์ ๋บ ์ํ๋ก ๊ฐ๋น์์ 1์ฐจ~4์ฐจ ์์๋๋ก ๋ฑ๋กํ๋ค.
โ ๏ธ ๋ค์์๋ฒ ์ฃผ์ ๋์ ์จ์ ์ ๊ฑฐ๋ฅผ ์์ง ๋ง์(
...com.โ...com). ์ด๊ฑธ ๋์น๋ฉด ๋๋ฉ์ธ ์์์ด ์ ์ ๋์ํ์ง ์๋๋ค.
3. ACM ์ธ์ฆ์ ๋ฐ๊ธ (์์ผ๋์นด๋)
ACM์์ ์ธ์ฆ์ ์์ฒญ โ ํผ๋ธ๋ฆญ ์ธ์ฆ์๋ฅผ ์ ํํ๋ค. ๋๋ฉ์ธ์ ์ ์ฐํ๊ฒ ์ฐ๋๋ก ์์ผ๋์นด๋(*.๋๋ฉ์ธ)๋ก ์ง์ ํ๊ณ , DNS ๊ฒ์ฆ์ ๊ฑฐ์น๋ฉด ๋ฐ๊ธ๋จ ์ํ๊ฐ ๋๋ค.
๐ก ์์ผ๋์นด๋(
*.example.com) ์ธ์ฆ์ ํ๋๋ฉดapi.example.com,jenkins.example.com๋ฑ ๋ชจ๋ ํ์ ๋๋ฉ์ธ์ ์ปค๋ฒํ๋ค. ์๋ธ๋๋ฉ์ธ๋ง๋ค ์ธ์ฆ์๋ฅผ ๋ฐ๋ก ๋ฐ๊ธํ ํ์๊ฐ ์๋ค.
4. ๋์ ๊ทธ๋ฃน ์์ฑ + ์ํ ๊ฒ์ฌ
EC2 โ ๋ก๋ ๋ฐธ๋ฐ์ฑ โ ๋์ ๊ทธ๋ฃน์์ ๋์ ๊ทธ๋ฃน์ ๋ง๋ ๋ค. ์คํ๋ง๋ถํธ๊ฐ 9090 ํฌํธ์ด๋ฏ๋ก HTTP:9090์ผ๋ก ์ง์ ํ๋ค.
์ํ ๊ฒ์ฌ(Health Check)๋ ๋์์ด ์ด์์๋์ง ํ์ธํ๋ ์์ฒญ์ด๋ค. ๊ธฐ๋ณธ ๊ฒฝ๋ก /์ ์๋ตํ๋๋ก ๊ฐ๋จํ ํฌ์ค ์ฒดํฌ ์ปจํธ๋กค๋ฌ๋ฅผ ๋๋ค.
1
2
3
4
5
6
7
@RestController
public class HealthController {
@GetMapping
public String healthCheck(){
return "health ok-test";
}
}
์ธ์คํด์ค๋ฅผ ์ฒดํฌํด ๋ณด๋ฅ ์ค์ผ๋ก ํฌํจํ๊ณ , ์คํ ํฌํธ๋ฅผ ์ ๋ ฅํด ๋์ ๊ทธ๋ฃน์ ๋ฃ๋๋ค.
๐ก ์ํ ๊ฒ์ฌ๋ ALB๊ฐ โ์ด ์ธ์คํด์ค์ ํธ๋ํฝ์ ๋ณด๋ด๋ ๋๋๊ฐโ๋ฅผ ํ๋จํ๋ ๊ทผ๊ฑฐ๋ค. ์ง์ ๊ฒฝ๋ก๋ก ์์ฒญํด ์ ์ ์๋ต(2xx)์ด ์ค๋ฉด
healthy, ์๋๋ฉดunhealthy๋ก ๋ณด๊ณ ํธ๋ํฝ์ ์ ์ธํ๋ค.
5. ALB ์์ฑ + HTTPS ๋ฆฌ์ค๋
EC2 โ ๋ก๋ ๋ฐธ๋ฐ์์์ ALB๋ฅผ ๋ง๋ ๋ค. ์ธ์คํด์ค๊ฐ ์ํ ๊ฐ์ฉ ์์ญ์ ๋ฐ๋์ ์ฒดํฌํ๊ณ , ๋ณด์ ๊ทธ๋ฃน์ ๊ธฐ๋ณธ์ ์ง์ฐ๊ณ ์ธ์คํด์ค์ ์ ์ฉ๋ ๊ฒ์ ๊ณ ๋ฅธ๋ค.
๋ฆฌ์ค๋์ HTTPS(443)๋ฅผ ์ถ๊ฐํ๊ณ ๋์ ๊ทธ๋ฃน์ ์ฐ๊ฒฐํ๋ค. ๋ณด์ ๋ฆฌ์ค๋์๋ ์์ ACM์์ ๋ง๋ ์ธ์ฆ์๋ฅผ ์ ํํ๋ค.
6. API ๋ ์ฝ๋ ์ถ๊ฐ & ํ์ธ
Route53์ผ๋ก ๋์์ ์๋ธ๋๋ฉ์ธ api๋ก ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค. HTTPS๋ก api.๋๋ฉ์ธ์ ์์ฒญํ๋ฉด, ํฌ์ค ์ฒดํฌ ์ปจํธ๋กค๋ฌ๊ฐ ์ ์ ์๋ตํ๋ค!
๐ ์ ๋ฆฌ
1
2
3
4
5
6
AWS HTTPS ์ ์ฉ
โโ ๋๋ฉ์ธ Route53 ํธ์คํ
์์ญ + NS ์์(์จ์ ์ ๊ฑฐ)
โโ ์ธ์ฆ์ ACM ์์ผ๋์นด๋(*.๋๋ฉ์ธ) ๋ฐ๊ธ
โโ ๋์๊ทธ๋ฃน HTTP:9090 + ํฌ์ค ์ฒดํฌ(/)
โโ ALB HTTPS 443 ๋ฆฌ์ค๋ + ACM ์ธ์ฆ์
โโ ๋ ์ฝ๋ api ์๋ธ๋๋ฉ์ธ โ ALB
| ๊ฐ๋ | ํ ์ค ์ ์ |
|---|---|
| ACM ์์ผ๋์นด๋ | ๋ชจ๋ ํ์ ๋๋ฉ์ธ ์ปค๋ฒ |
| ๋์ ๊ทธ๋ฃน | ALB๊ฐ ํธ๋ํฝ ๋ณด๋ผ ๋์ ๋ฌถ์ |
| SSL ์คํ๋ก๋ฉ | ALB์์ HTTPS ์ข ๋ฃ |
HTTPS ์ ์ฉ์ ํต์ฌ์ ACM ์ธ์ฆ์๋ฅผ ALB์ ๋ถ์ด๊ณ , ALB์์ HTTPS๋ฅผ ์ข ๋ฃํ๋ ๊ฒ์ด๋ค. Route53(๋๋ฉ์ธ) โ ACM(์ธ์ฆ์) โ ALB(๋ฆฌ์ค๋) โ ๋์ ๊ทธ๋ฃน(EC2)์ผ๋ก ์ด์ด์ง๋ ์ฐ๊ฒฐ ์์๋ฅผ ๊ธฐ์ตํ์.
























Comments powered by Disqus.