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

Web Development/Back-end

HTTP & HTTPS & SSL ์ดํ•ดํ•˜๊ธฐ

๐Ÿ“Œ Http (Hypertext Transfer Protocol) ?

  • ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ ๊ฐ„ ํ†ต์‹ ์„ ์ฃผ๊ณ  ๋ฐ›๊ฒŒ ํ•˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ”„๋กœํ† ์ฝœ ๋กœ ์ดˆ๊ธฐ์—๋Š” HTML์„ ์ฃผ๋กœ ์ „์†กํ–ˆ์œผ๋‚˜ ์ตœ๊ทผ์—๋Š” JSON, XML ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ •๋ณด ์ „์†ก๋„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.
  • ํด๋ผ์ด์–ธํŠธ ↔ ์„œ๋ฒ„ ๋ชจ๋ธ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ Request์™€ Response๋กœ ์ด๋ฃจ์–ด์ง.
  • Request๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์š”์ฒญ Method(GET,POST…), Path, ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „ ๊ทธ๋ฆฌ๊ณ  ํ—ค๋”, Payload(Optional) ๋กœ ์ด๋ฃจ์–ด์ง.

  • Response ๊ตฌ์กฐ๋Š” ํ”„๋กœํ† ์ฝœ ๋ฒ„์ „, Status Code, Status message ๊ทธ๋ฆฌ๊ณ  Header , Payload(Optional) ์ •๋ณด๋กœ ์ด๋ฃจ์–ด์ง

 

 

 

 

 

๐Ÿ“Œ Https (Hypertext Transfer Protocol Secure)

  • Https๋Š” Http์— Secure ๊ฐ€ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ. ์ฆ‰, ์ „์†ก๋œ ๋ฐ์ดํ„ฐ์˜ ์•ˆ์ „ํ•œ ์ „์†ก์„ ์œ„ํ•œ ํ”„๋กœํ† ์ฝœ์ด๋‹ค.
  • ์•„๋ž˜ ๊ทธ๋ฆผ ์˜ˆ์‹œ๋ฅผ ๋ณด๋ฉด, ํŒจํ‚ท ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ ํ•ด์ปค์˜ ์Šค๋‹ˆํ•‘ ๊ณต๊ฒฉ์— HTTP๋Š” ๊ทธ๋Œ€๋กœ Plain Text๊ฐ€ ๋…ธ์ถœ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋ฉด Https์—์„œ๋Š” Cyphered Text๊ฐ€ ์ „์†ก๋˜๊ธฐ์— ๋ณด๋‹ค ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์„œ๋ฒ„์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ฐ›๊ณ  Bcrypt ๋“ฑ์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋“ฑ์˜ ๊ณผ์ •์„ ๊ฑฐ์น˜์ง€๋งŒ Client ↔ Server๊ฐ„ ํ†ต์‹ ์—์„œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋…ธ์ถœ๋œ๋‹ค๋ฉด ๋ง์งฑ ๋„๋ฃจ๋ฌต์ด๋ฏ€๋กœ 2014๋…„ ๋ถ€ํ„ฐ ๊ตฌ๊ธ€์—์„œ๋Š” Http๋ฅผ Https๋กœ ๋ฐ”๊พธ๋ผ๊ณ  ๊ถŒ๊ณ . ๊ทธ ์ด์ „๊นŒ์ง€๋Š” ์ „์ž์ƒ๊ฑฐ๋ž˜ ๋“ฑ ์ฃผ์š” ํŽ˜์ด์ง€๋งŒ Https๋ฅผ ์ ์šฉํ–ˆ์Œ.

 

๐Ÿ“Œ SSL (Secure Socket Layer) & TLS (Transport Layer Security) ์ด๋ž€ ?

  • SSL์€ ์›น ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ๊ฐ„ ํ†ต์‹  ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ๋กœ 1994๋…„ Netscape์‚ฌ ๊ฐœ๋ฐœ
  • TLS๋Š” SSL 3.0์˜ ๋ณด์•ˆ ์ทจ์•ฝ์ ์„ ๋ณด์™„ํ•œ ํ†ต์‹  ๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ๋กœ ๊ตญ์ œ์ธํ„ฐ๋„ทํ‘œ์ค€ํ™”๊ธฐ๊ตฌ(IETF)์—์„œ ๊ณ„์Šนํ•˜์—ฌ ๊ฐœ๋ฐœ ์ง„ํ–‰ ์ค‘์ด๋‚˜ ํ†ต์ƒ SSL์ด๋ผ ๋ถ€๋ฆ„.
  • SSL ๊ธฐ๋ณธ ํฌํŠธ๋Š” 443์ž„.
  • ๊ทธ๋ž˜์„œ ์™œ ์”€?
    • ํŒจํ‚ท์— ๋Œ€ํ•˜์—ฌ ๊ณต๊ฒฉ์ž๋กœ๋ถ€ํ„ฐ ์Šค๋‹ˆํ•‘ ๋ฐฉ์ง€ (ํŒจํ‚ท ๊ฐ์ฒญ)
    • ํŒจํ‚ท์— ๋Œ€ํ•˜์—ฌ ๊ณต๊ฒฉ์ž๋กœ๋ถ€ํ„ฐ ์Šคํ‘ธํ•‘ ๋ฐฉ์ง€ (ํŒจํ‚ท ํƒˆ์ทจ)
  • ๋™์ž‘๋ฐฉ์‹
    • ๋ธŒ๋ผ์šฐ์ € ์ ‘์†ํ•˜๋ฉด Client & Server๊ฐ„ Hello ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.
      • Client : ์•”ํ˜ธํ™” ํ”„๋กœํ† ์ฝœ ์ •๋ณด์™€, ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•, ์„ธ์…˜ ์•„์ด๋”” ๋“ฑ ์ฃผ์š” ์ •๋ณด๋ฅผ ์ „๋‹ฌ
      • Server : ์•”ํ˜ธํ™” ๊ธฐ๋ฒ•, ์ธ์ฆ์„œ(CA, Domain, ๊ณต๊ฐœํ‚ค)๋ฅผ ํฌํ•จํ•˜์—ฌ ์ „๋‹ฌ
    • ์›น๋ธŒ๋ผ์šฐ์ € = ์ „๋‹ฌ๋ฐ›์€ ์ธ์ฆ์„œ๋ฅผ ๊ณต๊ฐœํ‚ค๋กœ ๋ณตํ˜ธํ™” & ๋ฐ์ดํ„ฐ ์•”ํ˜ธํ™”์— ์‚ฌ์šฉํ•  ๋Œ€์นญํ‚ค ์ƒ์„ฑ
    • ์ƒ์„ฑํ•œ ๋Œ€์นญํ‚ค๋ฅผ ์›น์„œ๋ฒ„์—์„œ ์ „๋‹ฌ๋ฐ›์€ ๊ณต๊ฐœํ‚ค๋กœ ์•”ํ˜ธํ™” ํ›„ → ์„œ๋ฒ„์— ์ „๋‹ฌ
    • ์„œ๋ฒ„๋Š” ์ „๋‹ฌ๋ฐ›์€ ์•”ํ˜ธํ™”๋œ ๋Œ€์นญํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋น„๋ฐ€ํ‚ค๋ฅผ ํ†ตํ•ด ๋ณตํ˜ธํ™”ํ•˜์—ฌ ๋Œ€์นญํ‚ค๋ฅผ ์–ป์Œ
    • ์ด์ œ ๋Œ€์นญํ‚ค๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•ด์„œ Client - Server๊ฐ„ ์ „๋‹ฌํ•˜๊ณ  ๋ณตํ˜ธํ™” ์ ์šฉ.

๐Ÿ“Œ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰๋ฐ›๊ธฐ

  • SSL์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ†ต์ƒ ์ „๋ฌธ ๋ณด์•ˆ ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ์—…์ฒด(CA)์—์„œ ๋ฐœ๊ธ‰ํ•œ SSL์ธ์ฆ์„œ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  • ์ธ์ฆ์„œ๋Š” ํ†ต์ƒ ์•„๋ž˜ 3๊ฐ€์ง€ ์ข…๋ฅ˜๋ฅผ ๋ณดํŽธ์ ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋‹จ์ผ์ธ์ฆ์„œ (Single Domain SSL) : www์„ ํฌํ•จํ•œ ํ•˜๋‚˜์˜ ๋„๋ฉ”์ธ๋งŒ ์ ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์™€์ผ๋“œ์นด๋“œ์ธ์ฆ์„œ (Wildcard SSL) : ํ•˜๋‚˜์˜ ์ธ์ฆ์„œ๋กœ ๋ชจ๋“  ์„œ๋ธŒ๋„๋ฉ”์ธ์„ ๋ฌด์ œํ•œ ์ ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ๋ฉ€ํ‹ฐ๋„๋ฉ”์ธ์ธ์ฆ์„œ (Multi-Domail SSL) : ํ•˜๋‚˜์˜ ์ธ์ฆ์„œ๋กœ ์ „ํ˜€ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ์— ์ ์šฉ์ด ๊ฐ€๋Šฅ.

 

๐Ÿ“Œ ๋ฌด๋ฃŒ SSL ์ธ์ฆ์„œ ๋ฐœ๊ธ‰ ์‚ฌ์ดํŠธ

  • ์ฒ˜์Œ ๋„๋ฉ”์ธ์„ ์ธ์ฆ๋ฐ›๊ณ  (*์œ ํšจ๊ธฐ๊ฐ„์ด ์žˆ์Œ 3๊ฐœ์›”) ๋งŒ๋ฃŒ๋˜๋ฉด Certbot ์„ ํ™œ์šฉํ•ด ์ž๋™ ์—ฐ์žฅ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ž„
  • https://letsencrypt.org/
  • https://zerossl.com/
  • https://www.sslforfree.com/

 

 

๐Ÿ“Œ Reference