Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Computer/Computer Science

[Network] HTTP์™€ HTTPS์˜ ๋™์ž‘๊ณผ์ • ์„ค๋ช…ํ•˜๊ธฐ

๊ฐ์ž ๐Ÿฅ” 2022. 9. 5. 16:26
๋ฐ˜์‘ํ˜•

 

https://github.com/JulSaMo/CS-start/pull/31

 

[Add] http์™€ https ๋‚ด์šฉ ์—…๋กœ๋“œ by deslog · Pull Request #31 · JulSaMo/CS-start

๐ŸŸฃ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ HTTP์™€ HTTPS ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ , ๋™์ž‘ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๐ŸŸฃ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ƒ๊ธด ์˜๋ฌธ์  ์˜๋ฌธ์€ ์—†์Šด๋„ค๋‹ค ๐ŸŸฃ ๊ธฐํƒ€ @Rookie0031 ๊ฐ€ ์š”์•ฝํ•ด๋†“์€๊ฑฐ ๋ณด๊ณ  ๋”ฐ๋ผํ•ด๋ด„ ^____^

github.com

์—ฌ๊ธฐ์„œ HTTPS์˜ ๋™์ž‘๊ณผ์ •์„ ์—…๋กœ๋“œํ–ˆ๋Š”๋ฐ, ๋™๋ฃŒ๋“ค์—๊ฒŒ ๋ช…ํ™•ํ•œ ์ „๋‹ฌ์ด ๋˜์ง€ ์•Š์•˜๋‹ค. ๋‹ค์‹œ ์ฐจ๊ทผ์ฐจ๊ทผ ์„ค๋ช…ํ•ด๋ณด์ž!!

 


 

๐ŸŸ  HTTP์˜ ๋™์ž‘๊ณผ์ •

HTTP๋Š” stateless ํ•œ ํ”„๋กœํ† ์ฝœ ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ ์š”์ฒญ์€ ๋…๋ฆฝ์ ์ธ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ธฐ ์ „์— Connectํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๊ณ  ์„œ๋ฒ„์˜ ์‘๋‹ต์„ ๋ฐ›์œผ๋ฉด Closeํ•˜๋Š” ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.

์„œ๋ฒ„ ์ ‘์† →ํด๋ผ์ด์–ธํŠธ →์š”์ฒญ → ์„œ๋ฒ„ → ์‘๋‹ต → ํด๋ผ์ด์–ธํŠธ → ์—ฐ๊ฒฐ close

 

 

๐ŸŸ  HTTPS ๋™์ž‘ ๋ฐฉ์‹

๊ณต๊ฐœํ‚ค(๋น„๋Œ€์นญํ‚ค) ์•”ํ˜ธํ™” ๋ฐฉ์‹์ด๋ž‘ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”๋ฐฉ์‹์˜ ์žฅ์ ์„ ํ™œ์šฉํ•ด์„œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. (๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์นญํ‚ค ๋ฐฉ์‹์œผ๋กœ ์•”๋ณตํ˜ธํ™” ํ•˜๊ณ , ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹์œผ๋กœ ๋Œ€์นญํ‚ค๋ฅผ ์ „๋‹ฌํ•œ๋‹ค)

CA : Certificate Authority , ์‚ฌ์ดํŠธ๊ฐ€ ์ •ํ™•ํ•œ ์‚ฌ์ดํŠธ๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•ด์ฃผ๋Š” ๊ณต์ธ๋œ ๋ฏผ๊ฐ„๊ธฐ์—…๋“ค. Chorem, ํŒŒ์ด์–ดํญ์Šค, ์‚ฌํŒŒ๋ฆฌ ๋“ฑ์€ ์ด CA๋“ค์˜ ๋ชฉ๋ก์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— URL์„ ํƒ€๊ณ  ๋“ค์–ด๊ฐˆ ๋•Œ ์ธ์ฆ ๊ธฐ๊ด€์—์„œ ํ™•์ธ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ!

 

 

1๏ธโƒฃ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„ ์ ‘์†ํ•ด์„œ Handshaking ๊ณผ์ •์—์„œ ์„œ๋กœ ํƒ์ƒ‰

  1. Client Hello
    • ํด๋ผ์ด์–ดํŠธ๊ฐ€ ์„œ๋ฒ„์—๊ฒŒ ์ „์†กํ•  ๋ฐ์ดํ„ฐ
      • ํด๋ผ์ด์–ธํŠธ ์ธก์—์„œ ์ƒ์„ฑํ•œ ๋žœ๋ค๋ฐ์ดํ„ฐ
      • ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ์•”ํ˜ธํ™” ๋ฐฉ์‹์„ ํ†ต์ผํ•˜๊ธฐ ์œ„ํ•ด์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•”ํ˜ธํ™” ๋ฐฉ์‹ ์ฑ„ํƒ
      • ์ด์ „์— ์ด๋ฏธ handshaking ๊ธฐ๋ก์ด ์žˆ๋‹ค๋ฉด ์ž์› ์ ˆ์•ฝ์„ ์œ„ํ•ด์„œ ๊ธฐ์กด ์„ธ์…˜ ์žฌํ™œ์šฉ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์„ธ์…˜ID
  2. Server Hello
    • Client Hello ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ „์†กํ•  ๋ฐ์ดํ„ฐ
      • ์„œ๋ฒ„์ธก์—์„œ ์ƒ์„ฑํ•œ ๋žœ๋ค ๋ฐ์ดํ„ฐ
      • ์„œ๋ฒ„๊ฐ€ ์„ ํƒํ•œ ํด๋ผ์ด์–ธํŠธ์˜ ์•”ํ˜ธํ™”๋ฐฉ์‹
      •  SSL์ธ์ฆ์„œ

 

3. Client ์ธ์ฆ ํ™•์ธ

  • ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ธ์ฆ์„œ๊ฐ€ CA์— ์˜ํ•ด์„œ ๋ฐœ๊ธ‰๋ฐ›์€๊ฒŒ ๋งž๋Š”์ง€ ๋ณธ์ธ์˜ ๋ชฉ๋ก์—์„œ ํ™•์ธํ•˜๊ณ  ๋ชฉ๋ก์— ์žˆ๋‹ค๋ฉด CA ๊ณต๊ฐœํ‚ค๋กœ ์ธ์ฆ์„œ ๋ณตํ˜ธํ™”
  • ํด๋ผ-์„œ๋ฒ„ ๊ฐ๊ฐ์˜ ๋žœ๋ค๋ฐ์ดํ„ฐ๋ฅผ ์กฐํ•ฉํ•˜์—ฌ pre master secret ๊ฐ’ ์ƒ์„ฑ (๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹  ์‹œ ๋Œ€์นญํ‚ค ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•  ํ‚ค์ž„)
  • pre master secret ๊ฐ’์„ ๊ณต๊ฐœํ‚ค ๋ฐฉ์‹์œผ๋กœ ์„œ๋ฒ„์— ์ „๋‹ฌ (๊ณต๊ฐœํ‚ค๋Š” ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ›์€ ์ธ์ฆ์„œ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.)
  • ์ผ๋ จ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ session key ์ƒ์„ฑ

4. Server ์ธ์ฆ ํ™•์ธ 

  • ์„œ๋ฒ„๋Š” ๋น„๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™”ํ•˜์—ฌ pre master secret ๊ฐ’ ์ทจ๋“ (๋Œ€์นญํ‚ค ๊ณต์œ  ์™„๋ฃŒ)
  • ์ผ๋ จ์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ์„œ session key ์ƒ์„ฑ

5. Handshaking ์ข…๋ฃŒ

2๏ธโƒฃ ๋ฐ์ดํ„ฐ ์ „์†ก

  • ์„œ๋ฒ„์™€ ํด๋ผ๋Š” session key ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์•”๋ณตํ˜ธํ™”ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์†ก์ˆ˜์‹ 

3๏ธโƒฃ ์—ฐ๊ฒฐ ์ข…๋ฃŒ ๋ฐ session key ํ๊ธฐ

 

< ์กฐ๊ธˆ ๋” ์ •๋ฆฌ๊ฐ€ ์ž˜๋œ ๊ทธ๋ฆผ ์ฒจ๋ถ€>

 


๐Ÿ“– Reference

https://velog.io/@averycode/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-HTTP%EC%99%80-HTTPS-%EB%8F%99%EC%9E%91-%EA%B3%BC%EC%A0%95

 

[๋„คํŠธ์›Œํฌ] HTTP์™€ HTTPS ๋™์ž‘ ๊ณผ์ •

HTTP์™€ HTTPS ๋™์ž‘ ๊ณผ์ •

velog.io

 

๋ฐ˜์‘ํ˜•