๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Back-end

[WEB] HTTPS์™€ SSL์ธ์ฆ์„œ

๋ฐ˜์‘ํ˜•

HTTPS & SSL ์ธ์ฆ์„œ

HTTP VS HTTPS

HTTP๋Š” Hypertext Transfer Protocol์˜ ์•ฝ์ž๋‹ค. ์ฆ‰ Hypertext์ธ HTML์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•œ ํ†ต์‹ ๊ทœ์•ฝ์„ ์˜๋ฏธํ•œ๋‹ค.

HTTPS์˜ ๋งˆ์ง€๋ง‰ S๋Š” OverSecure Socket Layer์˜ ์•ฝ์ž๋กœ ๋ณด์•ˆ์ด ๊ฐ•ํ™”๋œ HTTP๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. HTTP๋Š” ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๊ฐ์ฒญํ•˜๋Š”๊ฒƒ์ด ๋งค์šฐ ์‰ฌ์›Œ์„œ ์•…์˜์ ์ธ ๊ฐ์ฒญ์ด๋‚˜ ๋ฐ์ดํ„ฐ ๋ณ€์กฐ๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ๋ณด์•ˆํ•œ๊ฒƒ์ด HTTPS์ด๋‹ค.

HTTPS & SSL

HTTP๋Š” SSL/TLS ์œ„์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ด๊ณ , HTTP๊ฐ€ SSL์„ ์ด์šฉํ•œ๋‹ค๋ฉด HTTPS๊ฐ€ ๋˜๋Š”๊ฒƒ์ด๋‹ค.

SSL & TLS

SSL์€ ๋„ค์Šค์ผ€์ดํ”„์— ์˜ํ•ด์„œ ๋ฐœ๋ช… ๋˜์—ˆ๊ณ , ์ ์ฐจ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด์„œ ํ‘œ์ค€ํ™” ๊ธฐ๊ตฌ์ธ IETF์˜ ๊ด€๋ฆฌ๋กœ ๋ณ€๊ฒฝ๋˜๋ฉด์„œ TLS๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค. ์ •์‹ ๋ช…์นญ์€ TLS์ด์ง€๋งŒ SSL์ด๋ผ๋Š” ์ด๋ฆ„์ด ํ›จ์”ฌ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

SSL์˜ ๋™์ž‘ ๋ฐฉ๋ฒ•

ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ํ†ต์‹ ํ•  ๋•Œ ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ๋ฐฉ๋ฒ•์€ ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹์œผ๋กœ ํ†ต์‹ ์„ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ณต๊ฐœํ‚ค๋Š” ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ํ‚ค๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๊ณต๊ฐœ๋œ ํ‚ค๊ฐ€ ์œ ์‹ค๋˜๋”๋ผ๊ณ  ์ค‘๊ฐ„์— ๊ฐ€๋กœ์ฑ„์„œ ๋ณต๊ตฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹์€ ์•”ํ˜ธํ™”ํ•˜๊ณ  ๋ณตํ˜ธํ™”ํ•˜๋Š” ๊ณผ์ •์—์„œ ์ปดํ“จํŒ… ๋Šฅ๋ ฅ์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐœํ‚ค์™€ ๋Œ€์นญํ‚ค๋ฅผ ํ˜ผํ•ฉํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. ๋Œ€์นญํ‚ค ๋ฐฉ์‹์€ ๊ณต๊ฐœํ‚ค๋ณด๋‹ค ์ปดํ“จํŒ… ๋Šฅ๋ ฅ์„ ๋œ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์‹ค์ œ ๋ฐ์ดํ„ฐ : ๋Œ€์นญํ‚ค
  • ๋Œ€์นญํ‚ค์˜ ํ‚ค : ๊ณต๊ฐœํ‚ค

์‹ค์ œ ์ปดํ“จํ„ฐ๋ผ๋ฆฌ ๋„คํŠธ์›Œํฌ๋กœ ํ†ต์‹ ํ•  ๋•Œ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ 3๊ฐ€์ง€ ๋‹จ๊ณ„๊ฐ€ ์žˆ๋‹ค.

์•…์ˆ˜(Handshake) -> ์ „์†ก -> ์„ธ์…˜ ์ข…๋ฃŒ

1. ์•…์ˆ˜ (Handshake)

์ด ๊ณผ์ •์„ ํ†ตํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ์„œ๋กœ๊ฐ€ ์–ด๋–ค ์ƒํƒœ์ธ์ง€๋ฅผ ํŒŒ์•…ํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ผ์€ ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „์†กํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋ผ๋ฆฌ ์„œ๋กœ ์ž์‹ ๋“ค์˜ ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•์„ ์•Œ๋ ค์ค€๋‹ค.
๊ณผ์ •์„ ๋ณด๋ฉด

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ ‘์†ํ•œ๋‹ค. ์ด ๋‹จ๊ณ„๋ฅผ Client Hello๋ผ๊ณ  ํ•œ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.

    • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ƒ์„ฑํ•œ ๋žœ๋ค ๋ฐ์ดํ„ฐ
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹๋“ค(ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์ง€์›ํ•˜๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹๋“ค์ด ์„œ๋กœ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์—)
    • ์„ธ์…˜ ์•„์ด๋””
  2. ์„œ๋ฒ„๋Š” Client Hello์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ Server Hello๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด ๋‹จ๊ณ„์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.

    • ์„œ๋ฒ„์ธก์—์„œ ์ƒ์„ฑํ•œ ๋žœ๋ค ๋ฐ์ดํ„ฐ
    • ์„œ๋ฒ„๊ฐ€ ์„ ํƒํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ์•”ํ˜ธํ™” ๋ฐฉ์‹
    • ์ธ์ฆ์„œ
  3. ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์˜ ์ธ์ฆ์„œ๊ฐ€ ์–ด๋–ค CA(์ธ์ฆ๊ธฐ๊ด€)์— ์˜ํ•ด์„œ ๋ฐœ๊ธ‰๋œ ๊ฒƒ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ธŒ๋ผ์šฐ์ €์— ๋‚ด์žฅ๋˜์–ด์žˆ๋Š” CA(์ธ์ฆ๊ธฐ๊ด€) ๋ฆฌ์ŠคํŠธ๋ฅผ ํ™•์ธํ•˜๊ณ  ์—†๋‹ค๋ฉด ๊ฒฝ๊ณ  ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ธ์ฆ์„œ๊ฐ€ CA(์ธ์ฆ๊ธฐ๊ด€)์— ์˜ํ•ด์„œ ๋ฐœ๊ธ‰๋œ ๊ฒƒ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ์— ๋‚ด์žฅ๋œ CA(์ธ์ฆ๊ธฐ๊ด€)์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ ์ธ์ฆ์„œ๋ฅผ ๋ณตํ˜ธํ™” ํ•˜๊ณ , ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ์ธ์ฆ์„œ๋Š” CA(์ธ์ฆ๊ธฐ๊ด€)์˜ ๊ฐœ์ธํ‚ค๋กœ ์•”ํ˜ธํ™”๋œ ๋ฌธ์„œ์ž„์ด ์•”์‹œ์ ์œผ๋กœ ๋ณด์ฆ๋˜๊ณ , ์ธ์ฆ์„œ๋ฅผ ์ „์†กํ•œ ์„œ๋ฒ„๋ฅผ ๋ฏฟ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

    ํด๋ผ์ด์–ธํŠธ๋Š” 1๋ฒˆ์„ ํ†ตํ•ด์„œ ๋ฐ›์€ ์„œ๋ฒ„์˜ ๋žœ๋ค ๋ฐ์ดํ„ฐ์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ƒ์„ฑํ•œ ๋žœ๋ค ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•ด์„œ pre master secret์ด๋ผ๋Š” ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ธ์ฆ์„œ์— ์žˆ๋Š” ๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด pre master secret๊ฐ’์„ ์•”ํ˜ธํ™”ํ•ด์„œ ์„œ๋ฒ„๋กœ ์ „์†กํ•จ์œผ๋กœ์จ ์ œ 3์ž์—๊ฒŒ ๋…ธ์ถœ๋˜์ง€ ์•Š๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ์„œ๋ฒ„๋งŒ ์ž์‹ ์˜ ๋น„๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

  4. ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” pre master secret๊ฐ’์„ ๊ณต์œ ํ•˜๊ฒŒ ๋˜๊ณ , ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋ชจ๋‘ ์ผ๋ จ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ master secret๊ฐ’์œผ๋กœ ๋งŒ๋“ ๋‹ค. master secret์€ session key๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์ด ๊ฐ’์„ ์ด์šฉํ•ด์„œ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์นญํ‚ค ๋ฐฉ์‹์œผ๋กœ ์•”ํ˜ธํ™” ํ•œ ํ›„์— ์ฃผ๊ณ  ๋ฐ›๋Š”๋‹ค.

  5. ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๋Š” handshake ๋‹จ๊ณ„์˜ ์ข…๋ฃŒ๋ฅผ ์„œ๋กœ์—๊ฒŒ ์•Œ๋ฆฐ๋‹ค.

2. ์„ธ์…˜

์„ธ์…˜์€ ์‹ค์ œ๋กœ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๋‹จ๊ณ„์ด๋‹ค.
์ด ๋‹จ๊ณ„์—์„œ ์ •๋ณด๋ฅผ ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ์ „์†กํ•˜๊ธฐ ์ „์— session key๋ฅผ ์ด์šฉํ•ด์„œ ๋Œ€์นญํ‚ค ๋ฐฉ์‹์œผ๋กœ ์•”ํ˜ธํ™” ํ•˜๊ณ , ์•”ํ˜ธํ™” ๋œ ์ •๋ณด๋Š” ์ƒ๋Œ€๋ฐฉ์—๊ฒŒ ์ „์†ก ๋˜๊ณ , ์ƒ๋Œ€๋ฐฉ๋„ session key๋ฅผ ์•Œ๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณตํ˜ธํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค.

3. ์„ธ์…˜ ์ข…๋ฃŒ

๋ฐ์ดํ„ฐ์˜ ์ „์†ก์ด ๋๋‚˜๋ฉด SSL ํ†ต์‹ ์ด ๋๋‚ฌ์Œ์„ ์„œ๋กœ์—๊ฒŒ ์•Œ๋ ค์ค€๋‹ค. ์ด ๋•Œ ํ†ต์‹ ์—์„œ ์‚ฌ์šฉํ•œ session key๋ฅผ ํ๊ธฐํ•œ๋‹ค.

CA(์ธ์ฆ๊ธฐ๊ด€)

์ธ์ฆ์„œ์˜ ์—ญํ• ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†ํ•œ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์˜๋„ํ•œ ์„œ๋ฒ„๊ฐ€ ๋งž๋Š”์ง€๋ฅผ ๋ณด์žฅํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ์ด ์—ญํ• ์„ ํ•˜๋Š” ๋ฏผ๊ฐ„๊ธฐ์—…๋“ค์ด ์žˆ๋Š”๋ฐ ์ด๋Ÿฐ ๊ธฐ์—…๋“ค์„ CA(Certificate authority)ํ˜น์€ Root Certificate๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. CA๋Š” ์•„๋ฌด ๊ธฐ์—…์ด๋‚˜ ํ•  ์ˆ˜ ์—†๊ณ  ์‹ ๋ขฐ์„ฑ์ด ์—„๊ฒฉํ•˜๊ฒŒ ๊ณต์ธ๋œ ๊ธฐ์—…๋“ค๋งŒ์ด ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

SSL ์ธ์ฆ์„œ์˜ ๊ธฐ๋Šฅ

  1. ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†ํ•œ ์„œ๋ฒ„๊ฐ€ ์‹ ๋ขฐ ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์ž„์„ ๋ณด์žฅํ•œ๋‹ค.
  2. SSL ํ†ต์‹ ์— ์‚ฌ์šฉํ•  ๊ณต๊ฐœํ‚ค๋ฅผ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค.

SSL์˜ ๋‚ด์šฉ

  1. ์„œ๋น„์Šค์˜ ์ •๋ณด(์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•œ CA, ์„œ๋น„์Šค์˜ ๋„๋ฉ”์ธ ๋“ฑ)
  2. ์„œ๋ฒ„ ์ธก ๊ณต๊ฐœํ‚ค (๊ณต๊ฐœํ‚ค์˜ ๋‚ด์šฉ, ๊ณต๊ฐœํ‚ค์˜ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•)

1๋ฒˆ์€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ ‘์†ํ•œ ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์˜๋„ํ•œ ์„œ๋ฒ„๊ฐ€ ๋งž๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ๊ฐ€์ง€๊ณ . 2๋ฒˆ์€ ์„œ๋ฒ„์™€ ํ†ต์‹ ์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•  ๊ณต๊ฐœํ‚ค์™€ ๊ทธ ๊ณต๊ฐœํ‚ค์˜ ์•”ํ˜ธํ™” ๋ฐฉ๋ฒ•๋“ค์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค.

ํฌ๋กฌ์—์„œ ์ธ์ฆ์„œ๋ฅผ ํ™•์ธํ•ด๋ณด๋Š” ๋ฐฉ๋ฒ•

  1. ์ž๋ฌผ์‡  ์•„์ด์ฝ˜์„ ํด๋ฆญํ•ด์„œ ์ธ์ฆ์„œ ํƒญ์„ ๋“ค์–ด๊ฐ„๋‹ค

  2. ๋ฐœ๊ธ‰ ๋Œ€์ƒ๊ณผ ๋ฐœ๊ธ‰์ž๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ์ธ์ฆ๊ฒฝ๋กœ ํƒญ์„ ๋“ค์–ด๊ฐ€์„œ ์ธ์ฆ์„œ๋ฅผ ๋ฐœ๊ธ‰ํ•ด์ค€ ๊ธฐ๊ด€์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. GlobalSign์—์„œ ๋ฐœ๊ธ‰ํ•ด์ค€ ์ธ์ฆ์„œ์ž„์„ ์•Œ์ˆ˜ ์žˆ๋‹ค.

CA๋ฅผ ๋ธŒ๋ผ์šฐ์ €๋Š” ์•Œ๊ณ  ์žˆ๋‹ค.

๋ธŒ๋ผ์šฐ์ €๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ CA์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ๋ง์€ ๋ธŒ๋ผ์šฐ์ €์˜ ์†Œ์Šค์ฝ”๋“œ ์•ˆ์— CA ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋“ค์–ด์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ฏธ๋ฆฌ ํŒŒ์•…ํ•˜๊ณ  ์žˆ๋Š” CA์˜ ๋ฆฌ์ŠคํŠธ์— ํฌํ•จ๋˜์–ด์•ผ๋งŒ ๊ณต์ธ๋œ CA๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. CA์˜ ๋ฆฌ์ŠคํŠธ์™€ CA์˜ ๊ณต๊ฐœํ‚ค๋ฅผ ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋‹ค.

์ฐธ๊ณ ์‚ฌ์ดํŠธ

์ƒํ™œ์ฝ”๋”ฉ HTTPS : https://opentutorials.org/course/228/4894

๋ฐ˜์‘ํ˜•