HTTP와 HTTPS

HTTP(Hyper Text Transfer Protocol)

WWW(World-Wide-Web)기반 μ„œλΉ„μŠ€μ—μ„œ μ›Ή μ„œλ²„μ™€ WWW ν΄λΌμ΄μ–ΈνŠΈ(μ›Ή λΈŒλΌμš°μ €) κ°„ 톡신을 μœ„ν•΄ μ‚¬μš©ν•˜λŠ” λ„€νŠΈμ›Œν¬ ν”„λ‘œν† μ½œ

일반적으둜 80번 포트λ₯Ό μ‚¬μš©ν•œλ‹€. ν΄λΌμ΄μ–ΈνŠΈκ°€ 80번 포트λ₯Ό μ΄μš©ν•΄ 데이터λ₯Ό μš”μ²­(Request)ν•˜λ©΄ μ›Ή μ„œλ²„λŠ” 80번 포트둜 λ“€μ–΄μ˜¨ μš”μ²­μ— 응닡(Response)ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν†΅μ‹ ν•œλ‹€.

HTTP μš”μ²­(Request) λ©”μ‹œμ§€μ™€ 응닡(Response) λ©”μ‹œμ§€λŠ” 크게 Start line, Headers, Body λΆ€λΆ„μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

  • Start line : Method 방식, νƒ€κ²Ÿ URL, HTTP 버전 λ“±μ˜ 정보
  • Headers : Request와 Response λ©”μ‹œμ§€ 메타 정보
  • Body : μ‹€μ œ Request와 및 Response λ©”μ‹œμ§€ λ‚΄μš©

HTTPλŠ” 직관적이닀. μš”μ²­ 및 응닡 λ©”μ‹œμ§€(HTML 파일, ν…μŠ€νŠΈ 데이터, 이미지 및 파일 데이터 λ“±)λ₯Ό Body에 직접 λΆ™μ—¬ μ „λ‹¬ν•œλ‹€. λ”°λΌμ„œ 데이터λ₯Ό λΉ λ₯΄κ³  μ‰½κ²Œ μ£Όκ³  받을 수 μžˆλ‹€.

HTTPS(Hyper Text Transfer Protocol over Secure-Socket-Layer)

HTTP ν”„λ‘œν† μ½œμ— λŒ€ν•΄ SSL μ•”ν˜Έν™” 톡신 κΈ°λŠ₯을 μΆ”κ°€ν•œ λ„€νŠΈμ›Œν¬ ν”„λ‘œν† μ½œ

HTTPλŠ” μ›Ή μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ(λΈŒλΌμš°μ €) κ°„ 톡신을 μ œμ•½ 없이 자유둭게 μ§„ν–‰ν–ˆλ‹€λ©΄, HTTPSλŠ” μ›Ή μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ(λΈŒλΌμš°μ €) κ°„ 톡신이 μ•”ν˜Έν™”λ˜λ―€λ‘œ 제 3자의 κ°œμž…μ΄λ‚˜ μœ„, λ³€μ‘°λ₯Ό 막을 수 μžˆλ‹€.

일반적으둜 443번 포트λ₯Ό μ‚¬μš©ν•œλ‹€. λ˜ν•œ URL이 http://둜 μ‹œμž‘ν•˜λŠ” HTTP ν”„λ‘œν† μ½œκ³Ό 달리, HTTPS ν”„λ‘œν† μ½œμ€ https://둜 μ‹œμž‘ν•˜λ―€λ‘œ URL을 ν™•μΈν•˜λ©΄ μ–΄λ–€ μ›Ή μ‚¬μ΄νŠΈμ—μ„œ HTTPS ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•˜λŠ”μ§€ μ•Œ 수 μžˆλ‹€.

SSL(Secure Socket Layer)

μ›Ή μ„œλ²„μ™€ ν΄λΌμ΄μ–ΈνŠΈ κ°„ 톡신을 곡인된 제 3자 인증 κΈ°κ΄€ CA(Certificate Authority)μ—μ„œ μΈμ¦ν•˜μ—¬ λ³΄μ•ˆμ„ κ°•ν™”ν•˜λŠ” 방법

  • SSL은 OSI 7κ³„μΈ΅μ˜ μ‘μš© 계측과 ν‘œν˜„ 계측 쀑간에 λ…λ¦½μ μœΌλ‘œ μ‘΄μž¬ν•œλ‹€. μ‘μš©κ³„μΈ΅μ΄ SSL둜 데이터λ₯Ό μ „μ†‘ν•˜λ©΄ SSL은 이λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ TCP둜 보낸 λ’€ 이것이 μ™ΈλΆ€ μΈν„°λ„·μœΌλ‘œ μ „λ‹¬λœλ‹€. μˆ˜μ‹  μ—­μ‹œ TCPλ‘œλΆ€ν„° 데이터λ₯Ό μˆ˜μ‹ λ°›μ€ SSL은 이λ₯Ό λ³΅ν˜Έν™”ν•˜μ—¬ μ‘μš©κ³„μΈ΅μœΌλ‘œ μ „λ‹¬ν•œλ‹€.
  • 전솑 계측 λ³΄μ•ˆ(Transport Layer Security, TLS)은 쑰금 더 μ§„ν™”λœ λ²„μ „μ˜ SSL이닀. μ˜€λŠ˜λ‚  λŒ€λΆ€λΆ„ TLS 방식을 μ΄μš©ν•˜μ§€λ§Œ SSL이 더 많이 μ•Œλ €μ ΈμžˆκΈ°λ•Œλ¬Έμ— μ‹€μ œλ‘œλŠ” TLSλ₯Ό μ“°κ³  μš©μ–΄λ§Œ SSL이라고 ν•œλ‹€.

κ³΅κ°œν‚€ μ•”ν˜Έν™” 방식

  • 데이터λ₯Ό μ•”ν˜Έν™”(Encrypt)ν•˜κ³  μ•”ν˜Έν™”λœ 데이터λ₯Ό λ‹€μ‹œ ν‰λ¬ΈμœΌλ‘œ μ›μƒλ³΅κ΅¬ν•˜λŠ” λ³΅ν˜Έν™”(decrypt) κ³Όμ •μ—μ„œ 각각 μ„œλ‘œ λ‹€λ₯Έ ν‚€(Key)λ₯Ό μ‚¬μš©ν•œλ‹€.
  • Aν‚€λ₯Ό μ΄μš©ν•΄ μ•”ν˜Έν™”ν•œ λ°μ΄ν„°λŠ” Bν‚€κ°€ μžˆμ–΄μ•Ό λ³΅ν˜Έν™”ν•˜μ—¬ 해석할 수 μžˆλ‹€. 두 ν‚€λŠ” μŒμ„ 이룬닀.
  • μ•”ν˜Έν™” ν‚€(κ³΅κ°œν‚€)λŠ” λͺ¨λ‘μ—κ²Œ κ³΅κ°œλ˜μ–΄ 있기 λ•Œλ¬Έμ— λˆ„κ΅¬λ‚˜ μ•”ν˜Έν™”ν•  수 μžˆλ‹€.
  • λ‹€λ§Œ λ³΅ν˜Έν™” ν‚€(λΉ„λ°€ν‚€)λŠ” ν•΄λ‹Ή 데이터λ₯Ό μ—΄λžŒν•˜κ³  μˆ˜μ •ν•  κΆŒν•œμ΄ μžˆλŠ” 호슀트만 각자 개인의 λΉ„λ°€ν‚€λ₯Ό κ°–κ³  μžˆλ‹€. λ”°λΌμ„œ κΆŒν•œμ΄ μžˆλŠ” 자만 데이터λ₯Ό 읽을 수 μžˆλ‹€.

κ³΅κ°œν‚€ μ•”ν˜Έν™”μ˜ νŠΉμ„±μ„ μ΄μš©ν•œ μ „μž μ„œλͺ…

μœ„μ˜ κ³΅κ°œν‚€ μ•”ν˜Έν™” 방식을 μ‘μš©ν•˜μ—¬ 정보λ₯Ό μ œκ³΅ν•œ 자의 신원을 보μž₯ν•  수 μžˆλŠ” 방법이 μžˆλ‹€.

  • λΉ„λ°€ν‚€ μ†Œμœ κ°€ μžμ‹ μ˜ λΉ„λ°€ν‚€λ₯Ό μ΄μš©ν•΄ 데이터λ₯Ό μ•”ν˜Έν™”ν•˜κ³ , 이 데이터λ₯Ό κ³΅κ°œν‚€μ™€ ν•¨κ»˜ λ°°ν¬ν•œλ‹€.
  • 데이터λ₯Ό μˆ˜μ‹ ν•œ μžλŠ” ν•¨κ»˜ μˆ˜μ‹ ν•œ κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄ 데이터λ₯Ό λ³΅ν˜Έν™”ν•˜μ—¬ μ ‘κ·Όν•  수 μžˆλ‹€.

기쑴의 κ³΅κ°œν‚€ μ•”ν˜Έν™” λ°©μ‹μ—μ„œλŠ” κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”ν•œ λ’€ λΉ„λ°€ν‚€λ‘œ λ³΅ν˜Έν™”ν–ˆλ‹€λ©΄ μ „μž μ„œλͺ…μ—μ„œλŠ” λ°˜λŒ€λ‘œ λΉ„λ°€ν‚€λ‘œ μ•”ν˜Έν™”ν•œ λ’€ κ³΅κ°œν‚€λ‘œ λ³΅ν˜Έν™”ν•œλ‹€. 이 방법은 μ–Έλœ» 보면 λˆ„κ΅¬λ‚˜ κ³΅κ°œν‚€λ₯Ό μ΄μš©ν•΄ 데이터λ₯Ό 읽어 μœ„, λ³€μ‘°ν•  수 μžˆμ–΄ μœ„ν—˜ν•΄ 보인닀. ν•˜μ§€λ§Œ μ•”ν˜Έν™”λœ 데이터λ₯Ό νŠΉμ • κ³΅κ°œν‚€λ‘œ λ³΅ν˜Έν™”ν•  수 μžˆλ‹€λŠ” 것은 ν•΄λ‹Ή 데이터가 νŠΉμ • κ³΅κ°œν‚€μ™€ μŒμ„ μ΄λ£¨λŠ” νŠΉμ • λΉ„λ°€ν‚€λ‘œ μ•”ν˜Έν™”λ˜μ–΄μžˆλ‹€λŠ” 것을 μ˜λ―Έν•œλ‹€. λ”°λΌμ„œ 데이터λ₯Ό μ œκ³΅ν•œ 자의 신원을 보μž₯ν•  수 μžˆλ‹€.

SSL을 μ΄μš©ν•œ 톡신 κ³Όμ •

  1. Handshake

    1. ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— μ ‘μ†ν•œλ‹€.

      • μ „μ†‘ν•˜λŠ” 정보 : ν΄λΌμ΄μ–ΈνŠΈκ°€ μƒμ„±ν•œ 랜덀 데이터, μ•”ν˜Έν™” 방식 ν˜‘μƒμ„ μœ„ν•œ μ œμ•ˆ, μ„Έμ…˜ 아이디
      • 랜덀 λ°μ΄ν„°λŠ” μ‹€μ§ˆμ μΈ μš”μ²­ 및 응닡 λ©”μ‹œμ§€ μ•”ν˜Έν™”, λ³΅ν˜Έν™”λ₯Ό μœ„ν•΄ μ‚¬μš©λ¨
      • ν΄λΌμ΄μ–ΈνŠΈ μΈ‘μ—μ„œ κ°€λŠ₯ν•œ μ•”ν˜Έν™” λ°©μ‹μ˜ μ’…λ₯˜λ₯Ό μ„œλ²„ 츑에 μ œμ‹œ
      • 이후 같은 μ„Έμ…˜μ—μ„œλŠ” SSL ν•Έλ“œ 쉐이킹을 μƒλž΅ν•˜κΈ° μœ„ν•΄ μ„Έμ…˜ μ‹λ³„μžλ₯Ό ν•¨κ»˜ 보냄
    2. μ„œλ²„λŠ” ν΄λΌμ΄μ–ΈνŠΈμ˜ μš”μ²­μ— μ‘λ‹΅ν•œλ‹€.

      • μ „μ†‘ν•˜λŠ” 정보 : μ„œλ²„κ°€ μƒμ„±ν•œ 랜덀 데이터, ν΄λΌμ΄μ–ΈνŠΈμ˜ μ•”ν˜Έν™” 방식 쀑 μ„œλ²„κ°€ μ„ νƒν•œ μ•”ν˜Έν™” 방식 λͺ…μ‹œ, μΈμ¦μ„œ
      • 랜덀 λ°μ΄ν„°λŠ” μ‹€μ§ˆμ μΈ μš”μ²­ 및 응닡 λ©”μ‹œμ§€ μ•”ν˜Έν™”, λ³΅ν˜Έν™”λ₯Ό μœ„ν•΄ μ‚¬μš©λ¨
      • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ œμ‹œν•œ μ•”ν˜Έν™” 방식 쀑 κ°€λŠ₯ν•œ μ•”ν˜Έν™” 방식을 선택함
      • μ„œλ²„κ°€ 자기 μžμ‹ μž„μ„ μΈμ¦ν•˜κΈ° μœ„ν•œ μΈμ¦μ„œ
    3. ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ˜ μΈμ¦μ„œλ₯Ό 톡해 μ„œλ²„μ˜ 신원을 νŒλ³„ν•œλ‹€.

      • ν΄λΌμ΄μ–ΈνŠΈλŠ” μ„œλ²„μ˜ μΈμ¦μ„œκ°€ μ‹ λ’°ν•  수 μžˆλŠ” CAμ—μ„œ 인증된 것인지 ν™•μΈν•œλ‹€.
      • μ‹ λ’°ν•  수 μžˆλ‹€λ©΄ ν•΄λ‹Ή CA의 κ³΅κ°œν‚€λ‘œ μ„œλ²„μ˜ μΈμ¦μ„œλ₯Ό λ³΅ν˜Έν™”ν•œλ‹€.
      • λ³΅ν˜Έν™”κ°€ μ„±κ³΅ν–ˆλ‹€λŠ” 것은 CA의 κ³΅κ°œν‚€μ™€ μŒμ„ 이룬 ν•΄λ‹Ή CA의 λΉ„λ°€ν‚€λ‘œ μ•”ν˜Έν™”κ°€ λ˜μ—ˆλ‹€λŠ” 것을 μ˜λ―Έν•˜λ―€λ‘œ μ„œλ²„μ˜ 신원을 ν™•μ‹€ν•˜κ²Œ 믿을 수 μžˆλ‹€.
    4. μ‹€μ œ HTTPS 톡신 λ©”μ‹œμ§€λ₯Ό μ•”ν˜Έν™”ν•˜κΈ° μœ„ν•΄ ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„μ˜ 랜덀 λ©”μ‹œμ§€λ₯Ό μ‘°ν•©ν•˜μ—¬ pre master secret ν‚€λ₯Ό μƒμ„±ν•œλ‹€.

      • pre master secret ν‚€λŠ” λŒ€μΉ­ν‚€μ΄λ―€λ‘œ 이λ₯Ό μ£Όκ³ λ°›κΈ° μœ„ν•΄ λ‹€μ‹œ κ³΅κ°œν‚€ 방식을 μ΄μš©ν•œλ‹€. μ„œλ²„μ˜ κ³΅κ°œν‚€λ‘œ pre master secret ν‚€λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ 보내면 ν΄λΌμ΄μ–ΈνŠΈλŠ” 이λ₯Ό μžμ‹ μ˜ λΉ„λ°€ν‚€λ‘œ λ³΅ν˜Έν™”ν•˜μ—¬ λ©”μ‹œμ§€λ₯Ό 읽을 ν‚€(session key)λ₯Ό νšλ“ν•œλ‹€.
  2. μ„Έμ…˜

    • ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ μ‹€μ œ 데이터λ₯Ό μ£Όκ³  λ°›λŠ”λ‹€.
    • handshake λ‹¨κ³„μ—μ„œ κ³΅μœ ν•œ session key(λŒ€μΉ­ν‚€)λ₯Ό μ΄μš©ν•΄ λ©”μ‹œμ§€λ₯Ό μ•”ν˜Έν™” 및 λ³΅ν˜Έν™”ν•œλ‹€.
    • λŒ€μΉ­ν‚€μ™€ κ³΅κ°œν‚€λ₯Ό ν˜Όμš©ν•˜λŠ” 이유 : κ³΅κ°œν‚€ 방식이 μƒλŒ€μ μœΌλ‘œ λ§Žμ€ 연산을 ν•„μš”λ‘œν•˜κΈ° λ•Œλ¬Έμ— 연산을 μ΅œμ†Œν™”ν•˜κΈ°μœ„ν•΄ μ‹€μ œ 데이터에 μ ‘κ·Όν•˜κΈ° μœ„ν•œ λŒ€μΉ­ν‚€λ§Œ κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”ν•˜λŠ” 것!
  3. μ„Έμ…˜ μ’…λ£Œ

    • SSL 톡신이 λλ‚¬μŒμ„ μ„œλ‘œμ—κ²Œ ν†΅μ§€ν•œλ‹€.
    • session keyλŠ” νκΈ°ν•œλ‹€.

HTTP Vs HTTPS

  1. HTTPS ν”„λ‘œν† μ½œκ³Ό HTTP ν”„λ‘œν† μ½œμ˜ κ°€μž₯ 큰 μ°¨μ΄λŠ” λ³΄μ•ˆμ΄λ‹€.

    • HTTPS ν”„λ‘œν† μ½œμ€ SSL μ•”ν˜Έν™” 방식을 μ΄μš©ν•΄ μš”μ²­κ³Ό 응닡 주체λ₯Ό 인증할 수 있고, μ „μ†‘ν•˜λŠ” 데이터도 μ•”ν˜Έν™” λ˜μ–΄μžˆμœΌλ―€λ‘œ ν•΄λ…ν•˜μ—¬ μœ„, λ³€μ‘°ν•  수 μ—†λ‹€. 즉, λ°μ΄ν„°μ˜ 무결성을 보μž₯ν•œλ‹€.
    • μ‚¬μš©μžμ˜ κ°œμΈμ •λ³΄λ‚˜ 결제 정보 λ“±κ³Ό 같이 λ―Όκ°ν•˜κ³  μ€‘μš”ν•œ 정보λ₯Ό 전솑해야할 경우 HTTPS ν”„λ‘œν† μ½œμ„ μ΄μš©ν•΄μ•Ό ν•œλ‹€.
  2. 뢀가적인 μ°¨μ΄λŠ” SEO ν’ˆμ§ˆμ΄λ‹€.

    • SEO(Search Engine Optimization, 검색 엔진 μ΅œμ ν™”) : ꡬ글 λ“±μ˜ 검색 μ—”μ§„μ—μ„œ μ›Ήμ‚¬μ΄νŠΈκ°€ 잘 κ²€μƒ‰λ˜κ³  λ…ΈμΆœλ  수 μžˆλ„λ‘ 검색을 μ΅œμ ν™” ν•˜λŠ” μ „λž΅
    • 검색 엔진 ꡬ글은 HTTPS ν”„λ‘œν† μ½œμ„ μ΄μš©ν•˜λŠ” μ›Ή μ‚¬μ΄νŠΈμ— λŒ€ν•΄ SEO 가산점을 μ œκ³΅ν•˜μ—¬ μ›Ή μ‚¬μ΄νŠΈλ“€μ΄ HTTPS ν”„λ‘œν† μ½œμ„ μ΄μš©ν•˜λ„λ‘ μœ λ„ν•˜κ³  μžˆλ‹€.
    • λ‚˜μ•„κ°€ 크둬과 같은 λΈŒλΌμš°μ €μ—μ„œλŠ” HTTP ν”„λ‘œν† μ½œμ„ μ΄μš©ν•˜κ±°λ‚˜ μ‹ λ’°ν•  수 μ—†λŠ” μΈμ¦μ„œλ₯Ό μ΄μš©ν•΄ 톡신할 경우 β€˜μ•ˆμ „ν•˜μ§€ μ•ŠμŒβ€™ μ΄λΌλŠ” λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•¨μœΌλ‘œμ¨ μ‚¬μš©μžκ°€ HTTP μ›Ή μ‚¬μ΄νŠΈλ₯Ό μ ‘μ†ν•˜λŠ” 것을 κ°„μ ‘μ μœΌλ‘œ 막고 μžˆλ‹€.
    • λ˜ν•œ κ΅¬κΈ€μ—μ„œ μ§€μ›ν•˜λŠ” AMP(Accelerated Mobile Pages, κ°€μ†ν™”λœ λͺ¨λ°”일 νŽ˜μ΄μ§€) ν˜œνƒμ„ λ°›κΈ° μœ„ν•΄μ„œλ„ HTTPS ν”„λ‘œν† μ½œμ„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.
  3. λ―Έλ¬˜ν•œ μ„±λŠ₯ 차이가 μ‘΄μž¬ν•  수 μžˆμœΌλ‚˜ 기술의 λ°œλ‹¬λ‘œ 체감할 수 μ—†λŠ” μˆ˜μ€€μ΄ λ˜κ±°λ‚˜ 였히렀 HTTPSκ°€ 더 쒋은 μ„±λŠ₯을 보이기도 ν•˜λ―€λ‘œ λ¬Έμ œκ°€ μ—†λŠ” μˆ˜μ€€μ΄λ‹€.

References

μƒν™œμ½”λ”© - HTTPS와 SSL μΈμ¦μ„œ