Post

[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 ๋ ˆ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

Untitled

Untitled

Untitled

NS ๋ ˆ์ฝ”๋“œ์˜ ๋„ค์ž„์„œ๋ฒ„ 4๊ฐœ๋ฅผ ๋ณต์‚ฌํ•ด, ๋์˜ ์˜จ์ (.)์„ ๋บ€ ์ƒํƒœ๋กœ ๊ฐ€๋น„์•„์— 1์ฐจ~4์ฐจ ์ˆœ์„œ๋Œ€๋กœ ๋“ฑ๋กํ•œ๋‹ค.

Untitled

Untitled

โš ๏ธ ๋„ค์ž„์„œ๋ฒ„ ์ฃผ์†Œ ๋์˜ ์˜จ์  ์ œ๊ฑฐ๋ฅผ ์žŠ์ง€ ๋ง์ž(...com. โ†’ ...com). ์ด๊ฑธ ๋†“์น˜๋ฉด ๋„๋ฉ”์ธ ์œ„์ž„์ด ์ •์ƒ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.


3. ACM ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ (์™€์ผ๋“œ์นด๋“œ)

ACM์—์„œ ์ธ์ฆ์„œ ์š”์ฒญ โ†’ ํผ๋ธ”๋ฆญ ์ธ์ฆ์„œ๋ฅผ ์„ ํƒํ•œ๋‹ค. ๋„๋ฉ”์ธ์€ ์œ ์—ฐํ•˜๊ฒŒ ์“ฐ๋„๋ก ์™€์ผ๋“œ์นด๋“œ(*.๋„๋ฉ”์ธ)๋กœ ์ง€์ •ํ•˜๊ณ , DNS ๊ฒ€์ฆ์„ ๊ฑฐ์น˜๋ฉด ๋ฐœ๊ธ‰๋จ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค.

Untitled

Untitled

Untitled

Untitled

๐Ÿ’ก ์™€์ผ๋“œ์นด๋“œ(*.example.com) ์ธ์ฆ์„œ ํ•˜๋‚˜๋ฉด api.example.com, jenkins.example.com ๋“ฑ ๋ชจ๋“  ํ•˜์œ„ ๋„๋ฉ”์ธ์„ ์ปค๋ฒ„ํ•œ๋‹ค. ์„œ๋ธŒ๋„๋ฉ”์ธ๋งˆ๋‹ค ์ธ์ฆ์„œ๋ฅผ ๋”ฐ๋กœ ๋ฐœ๊ธ‰ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.


4. ๋Œ€์ƒ ๊ทธ๋ฃน ์ƒ์„ฑ + ์ƒํƒœ ๊ฒ€์‚ฌ

EC2 โ†’ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ โ†’ ๋Œ€์ƒ ๊ทธ๋ฃน์—์„œ ๋Œ€์ƒ ๊ทธ๋ฃน์„ ๋งŒ๋“ ๋‹ค. ์Šคํ”„๋ง๋ถ€ํŠธ๊ฐ€ 9090 ํฌํŠธ์ด๋ฏ€๋กœ HTTP:9090์œผ๋กœ ์ง€์ •ํ•œ๋‹ค.

Untitled

Untitled

์ƒํƒœ ๊ฒ€์‚ฌ(Health Check)๋Š” ๋Œ€์ƒ์ด ์‚ด์•„์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์š”์ฒญ์ด๋‹ค. ๊ธฐ๋ณธ ๊ฒฝ๋กœ /์— ์‘๋‹ตํ•˜๋„๋ก ๊ฐ„๋‹จํ•œ ํ—ฌ์Šค ์ฒดํฌ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋‘”๋‹ค.

1
2
3
4
5
6
7
@RestController
public class HealthController {
    @GetMapping
    public String healthCheck(){
        return "health ok-test";
    }
}

์ธ์Šคํ„ด์Šค๋ฅผ ์ฒดํฌํ•ด ๋ณด๋ฅ˜ ์ค‘์œผ๋กœ ํฌํ•จํ•˜๊ณ , ์‹คํ–‰ ํฌํŠธ๋ฅผ ์ž…๋ ฅํ•ด ๋Œ€์ƒ ๊ทธ๋ฃน์— ๋„ฃ๋Š”๋‹ค.

Untitled

Untitled

Untitled

Untitled

๐Ÿ’ก ์ƒํƒœ ๊ฒ€์‚ฌ๋Š” ALB๊ฐ€ โ€œ์ด ์ธ์Šคํ„ด์Šค์— ํŠธ๋ž˜ํ”ฝ์„ ๋ณด๋‚ด๋„ ๋˜๋Š”๊ฐ€โ€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๊ทผ๊ฑฐ๋‹ค. ์ง€์ • ๊ฒฝ๋กœ๋กœ ์š”์ฒญํ•ด ์ •์ƒ ์‘๋‹ต(2xx)์ด ์˜ค๋ฉด healthy, ์•„๋‹ˆ๋ฉด unhealthy๋กœ ๋ณด๊ณ  ํŠธ๋ž˜ํ”ฝ์„ ์ œ์™ธํ•œ๋‹ค.


5. ALB ์ƒ์„ฑ + HTTPS ๋ฆฌ์Šค๋„ˆ

EC2 โ†’ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ์—์„œ ALB๋ฅผ ๋งŒ๋“ ๋‹ค. ์ธ์Šคํ„ด์Šค๊ฐ€ ์†ํ•œ ๊ฐ€์šฉ ์˜์—ญ์„ ๋ฐ˜๋“œ์‹œ ์ฒดํฌํ•˜๊ณ , ๋ณด์•ˆ ๊ทธ๋ฃน์€ ๊ธฐ๋ณธ์„ ์ง€์šฐ๊ณ  ์ธ์Šคํ„ด์Šค์— ์ ์šฉ๋œ ๊ฒƒ์„ ๊ณ ๋ฅธ๋‹ค.

Untitled

Untitled

Untitled

Untitled

Untitled

๋ฆฌ์Šค๋„ˆ์— HTTPS(443)๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋Œ€์ƒ ๊ทธ๋ฃน์„ ์—ฐ๊ฒฐํ•œ๋‹ค. ๋ณด์•ˆ ๋ฆฌ์Šค๋„ˆ์—๋Š” ์•ž์„œ ACM์—์„œ ๋งŒ๋“  ์ธ์ฆ์„œ๋ฅผ ์„ ํƒํ•œ๋‹ค.

Untitled

Untitled


6. API ๋ ˆ์ฝ”๋“œ ์ถ”๊ฐ€ & ํ™•์ธ

Route53์œผ๋กœ ๋Œ์•„์™€ ์„œ๋ธŒ๋„๋ฉ”์ธ api๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. HTTPS๋กœ api.๋„๋ฉ”์ธ์— ์š”์ฒญํ•˜๋ฉด, ํ—ฌ์Šค ์ฒดํฌ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ •์ƒ ์‘๋‹ตํ•œ๋‹ค!

Untitled

Untitled


๐Ÿ“ ์ •๋ฆฌ

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)์œผ๋กœ ์ด์–ด์ง€๋Š” ์—ฐ๊ฒฐ ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•˜์ž.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.