Skip to content

Latest commit

Β 

History

History
86 lines (49 loc) Β· 4.6 KB

HTTP, HTTPS.md

File metadata and controls

86 lines (49 loc) Β· 4.6 KB

HTTP, HTTPS

[HTTP]

  • μ›Ή μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ κ°„μ˜ λ¬Έμ„œλ₯Ό κ΅ν™˜ν•˜κΈ° μœ„ν•œ 톡신 κ·œμ•½
  • μ›Ήμ—μ„œλ§Œ μ‚¬μš©ν•˜λŠ” ν”„λ‘œν† μ½œλ‘œ TCP/IP 기반으둜 μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ κ°„μ˜ μš”μ²­κ³Ό 응닡을 μ „μ†‘ν•œλ‹€.

[HTTP의 νŠΉμ§•]

  • TCP 기반의 톡신 방식
  • λΉ„μ—°κ²° 지ν–₯
    • λΈŒλΌμš°μ €λ₯Ό 톡해 μ‚¬μš©μžμ˜ μš”μ²­μœΌλ‘œ μ„œλ²„μ™€ μ ‘μ†ν•˜μ—¬ μš”μ²­μ— λŒ€ν•œ μ‘λ‹΅μ˜ 데이터λ₯Ό 전솑후, 연결을 μ’…λ£Œν•œλ‹€.
    • κ°„λ‹¨ν•˜κΈ° λ•Œλ¬Έμ— μžμ›μ΄ μ κ²Œλ“œλŠ” μž₯점이 μžˆλ‹€.
    • ν•˜μ§€λ§Œ, 연결이 지속적이지 μ•ŠκΈ° λ•Œλ¬Έμ— μ‚¬μš©μžμ™€ μ—°κ²° μ’…λ£Œν›„ 좔가적인 μš”μ²­μ‹œ μ–΄λ–€ μ‚¬μš©μžμ˜ μš”μ²­μΈμ§€ λͺ¨λ₯Έλ‹€λŠ” 점이 μ‘΄μž¬ν•œλ‹€.
    • 즉, μ—¬λŸ¬ μ‚¬μš©μžκ°€ μš”μ²­ν•  μ‹œ 각각의 μ‚¬μš©μž μš”μ²­μ„ ꡬ뢄할 수 μ—†μ–΄μ„œ μ œλŒ€λ‘œ 된 응닡 데이터λ₯Ό 전솑할 수 μ—†λ‹€λŠ” 단점이 μžˆλ‹€.
    • ν•΄κ²° λ°©λ²•μœΌλ‘œλŠ” μΏ ν‚€, μ„Έμ…˜, νžˆλ“  폼 ν•„λ“œ 등이 μžˆλ‹€.
  • 단방ν–₯μ„±
    • μ‚¬μš©μžμ˜ μš”μ²­ ν•œκ°œμ— λŒ€ν•΄ ν•œκ°œμ˜ 응닡을 ν•˜λŠ” 방식이기 λ•Œλ¬Έμ— μ„œλ²„κ°€ λ¨Όμ € μ‘λ‹΅ν•˜μ§€ μ•ŠλŠ”λ‹€.

HTTP의 문제점

  • HTTPλŠ” 평문 톡신이기 λ•Œλ¬Έμ— 도청이 κ°€λŠ₯ν•˜λ‹€.
  • 톡신 μƒλŒ€λ₯Ό ν™•μΈν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μœ„μž₯이 κ°€λŠ₯ν•˜λ‹€.
  • 완전성을 증λͺ…ν•  수 μ—†κΈ° λ•Œλ¬Έμ— λ³€μ‘°κ°€ κ°€λŠ₯ν•˜λ‹€.

μ΄λŸ¬ν•œ λ¬Έμ œμ μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•΄ HTTPSκ°€ λ“±μž₯ν–ˆλ‹€.

[HTTPS]

  • HTTP ν†΅μ‹ ν•˜λŠ” μ†ŒμΌ“ 뢀뢄을 인터넷 μƒμ—μ„œ 정보λ₯Ό μ•”ν˜Έν™”ν•˜λŠ” SSL(Secure Socket Layer)λΌλŠ” ν”„λ‘œν† μ½œλ‘œ λŒ€μ²΄ν•œ 것이닀.
  • HTTPλŠ” TCP와 ν†΅μ‹ ν–ˆμ§€λ§Œ, HTTPSμ—μ„œ HTTPλŠ” SSLκ³Ό ν†΅μ‹ ν•˜κ³  SSL이 TCP와 ν†΅μ‹ ν•˜κ²Œ λœλ‹€.
  • 즉, ν•˜λ‚˜μ˜ λ ˆμ΄μ–΄λ₯Ό 더 λ‘” 것이닀.
  • HTTPS의 SSLμ—μ„œλŠ” λŒ€μΉ­ν‚€ μ•”ν˜Έν™” 방식과 κ³΅κ°œν‚€ μ•”ν˜Έν™” 방식을 λͺ¨λ‘ μ‚¬μš©ν•œλ‹€.

SSL

SSL ν”„λ‘œν† μ½œμ€ Netscape μ‚¬μ—μ„œ μ›Ή μ„œλ²„μ™€ λΈŒλΌμš°μ € μ‚¬μ΄μ˜ λ³΄μ•ˆμ„ μœ„ν•΄ λ§Œλ“€μ–΄μ‘Œλ‹€. CA(Certificate Authority)라 λΆˆλ¦¬λŠ” μ„œλ“œ νŒŒν‹°λ‘œλΆ€ν„° μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈμ˜ 인증을 ν•˜λŠ”λ° μ‚¬μš©λœλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„λ₯Ό μš΄μ˜ν•˜λŠ” 기업은 CAλ₯Ό 톡해 μΈμ¦μ„œλ₯Ό λ§Œλ“ λ‹€.

  1. μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„œλ²„λ₯Ό μš΄μ˜ν•˜λŠ” 기업은 HTTPS μ μš©μ„ μœ„ν•΄ κ³΅κ°œν‚€μ™€ κ°œμΈν‚€λ₯Ό λ§Œλ“ λ‹€.
  2. μ‹ λ’°ν•  수 μžˆλŠ” CA 기업을 μ„ νƒν•˜κ³  μΈμ¦μ„œ 생성을 μš”μ²­ν•œλ‹€.
  3. CAλŠ” μ„œλ²„μ˜ κ³΅κ°œν‚€, μ•”ν˜Έν™” 방법 λ“±μ˜ 정보λ₯Ό 담은 μΈμ¦μ„œλ₯Ό λ§Œλ“€κ³  ν•΄λ‹Ή CA의 κ°œμΈν‚€λ‘œ μ•”ν˜Έν™”ν•˜μ—¬ μ„œλ²„μ— μ œκ³΅ν•œλ‹€.
  4. ν΄λΌμ΄μ–ΈνŠΈκ°€ SSL둜 μ•”ν˜Έν™”λœ νŽ˜μ΄μ§€(https://)λ₯Ό μš”μ²­μ‹œ μ„œλ²„λŠ” μΈμ¦μ„œλ₯Ό μ „μ†‘ν•œλ‹€.

ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ˜ 톡신 흐름 κ³Όμ •

  1. ν΄λΌμ΄μ–ΈνŠΈκ°€ SSL둜 μ•”ν˜Έν™”λœ νŽ˜μ΄μ§€λ₯Ό μš”μ²­ν•œλ‹€.
  2. μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ—κ²Œ μΈμ¦μ„œλ₯Ό μ „μ†‘ν•œλ‹€.
  3. ν΄λΌμ΄μ–ΈνŠΈλŠ” μΈμ¦μ„œκ°€ μ‹ μš©μ΄ μžˆλŠ” CAλ‘œλΆ€ν„° μ„œλͺ…λœ 것인지 νŒλ‹¨ν•œλ‹€. λΈŒλΌμš°μ €λŠ” CA λ¦¬μŠ€νŠΈμ™€ ν•΄λ‹Ή CA의 κ³΅κ°œν‚€λ₯Ό 가지고 μžˆλ‹€. κ³΅κ°œν‚€λ₯Ό ν™œμš©ν•˜μ—¬ μΈμ¦μ„œκ°€ λ³΅ν˜Έν™”κ°€ κ°€λŠ₯ν•˜λ‹€λ©΄ μ ‘μ†ν•œ μ‚¬μ΄νŠΈκ°€ CA에 μ˜ν•΄ κ²€ν† λ˜μ—ˆλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ μ„œλ²„κ°€ μ‹ μš©μ΄ μžˆλ‹€κ³  νŒλ‹¨ν•œλ‹€. κ³΅κ°œν‚€κ°€ 데이터λ₯Ό μ œκ³΅ν•œ μ‚¬λžŒμ˜ 신원을 보μž₯ν•΄μ£ΌλŠ” κ²ƒμœΌλ‘œ μ΄λŸ¬ν•œ 것을 μ „μž μ„œλͺ… 이라고 ν•œλ‹€.
  4. ν΄λΌμ΄μ–ΈνŠΈλŠ” CA의 κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄ μΈμ¦μ„œλ₯Ό λ³΅ν˜Έν™”ν•˜κ³  μ„œλ²„μ˜ κ³΅κ°œν‚€λ₯Ό νšλ“ν•œλ‹€.
  5. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ˜ κ³΅κ°œν‚€λ₯Ό μ‚¬μš©ν•΄ 랜덀 λŒ€μΉ­ μ•”ν˜Έν™”ν‚€, 데이터 등을 μ•”ν˜Έν™”ν•˜μ—¬ μ„œλ²„λ‘œ μ „μ†‘ν•œλ‹€.
  6. μ„œλ²„λŠ” μžμ‹ μ˜ κ°œμΈν‚€λ₯Ό μ΄μš©ν•΄ λ³΅ν˜Έν™”ν•˜κ³  랜덀 λŒ€μΉ­ μ•”ν˜Έν™”ν‚€, 데이터 등을 νšλ“ν•œλ‹€.
  7. μ„œλ²„λŠ” 랜덀 λŒ€μΉ­ μ•”ν˜Έν™”ν‚€λ‘œ ν΄λΌμ΄μ–ΈνŠΈ μš”μ²­μ— λŒ€ν•œ 응닡을 μ•”ν˜Έν™”ν•˜μ—¬ μ „μ†‘ν•œλ‹€.
  8. ν΄λΌμ΄μ–ΈνŠΈλŠ” 랜덀 λŒ€μΉ­ μ•”ν˜Έν™”ν‚€λ₯Ό μ΄μš©ν•΄ λ³΅ν˜Έν™”ν•˜κ³  데이터λ₯Ό μ΄μš©ν•œλ‹€.

μΈμ¦μ„œμ— ν¬ν•¨λœ λ‚΄μš©

  • μ„œλ²„μΈ‘ κ³΅κ°œν‚€(public key)
  • κ³΅κ°œν‚€ μ•”ν˜Έν™” 방법
  • μΈμ¦μ„œλ₯Ό μ‚¬μš©ν•œ μ›Ήμ„œλ²„μ˜ URL
  • μΈμ¦μ„œλ₯Ό λ°œν–‰ν•œ κΈ°κ΄€ 이름

λͺ¨λ“  μ›ΉνŽ˜μ΄μ§€μ—μ„œ HTTPSλ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ”λ‹€. μ΄μœ λŠ” 평문 톡신에 λΉ„ν•΄μ„œ μ•”ν˜Έν™” 톡신은 CPUλ‚˜ λ©”λͺ¨λ¦¬ λ“± λ¦¬μ†ŒμŠ€λ₯Ό 많이 ν•„μš”λ‘œ ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€. 톡신할 λ•Œλ§ˆλ‹€ μ•”ν˜Έν™”λ₯Ό ν•˜λ©΄ λ¦¬μ†ŒμŠ€λ₯Ό μ†ŒλΉ„ν•˜κΈ° λ•Œλ¬Έμ— μ„œλ²„ ν•œ λŒ€λ‹Ή μ²˜λ¦¬ν•  수 μžˆλŠ” Request μˆ˜κ°€ μ€„μ–΄λ“€κ²Œ λœλ‹€.

λ”°λΌμ„œ λ―Όκ°ν•œ 정보λ₯Ό λ‹€λ£° λ•Œλ§Œ HTTPS에 μ˜ν•œ μ•”ν˜Έν™” 톡신을 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.