HTTPλ HTML λ¬Έμμ κ°μ 리μμ€λ€μ κ°μ Έμ¬ μ μλλ‘ ν΄μ£Όλ νλ‘ν μ½μ΄λ€. μΉμμ μ΄λ£¨μ΄μ§λ λͺ¨λ λ°μ΄ν° κ΅νμ κΈ°μ΄μ΄λ©°, ν΄λΌμ΄μΈνΈ-μλ² νλ‘ν μ½μ΄κΈ°λ νλ€.
μΆμ²: MDN - HTTP κ°μ
HTTP(Hypertext Transfer Protocol)λ μμ MDNμμ μ€λͺ ν κ²κ³Ό κ°μ΄ μΉμμ ν΅μ μ ν¨μ μμ΄ κ°μ₯ μ€μν νλ‘ν μ½μ€ νλμ΄λ€.
μ¬κΈ°μ νλ‘ν μ½μ΄λ? ν΅μ μ μν΄ μνΈκ°μ μ μν κ·μΉ μ λλ‘ μ€λͺ μ΄ κ°λ₯ν κ² κ°λ€.
μ¬λ¬ λλΌ μ¬λλ€μ΄ λνλ₯Ό ν λ, μμ λ€λ§μ μΈμ΄λ‘λ§ λ§μ νλ€λ©΄? μμ λν μμ²΄κ° μ΄λ£¨μ΄μ§μ§ μλλ€! κ·Έλ κΈ°μ νλμ 곡μ©μ΄λ ν΄λΉ μΈμ΄λ‘ ν΅μμ ν΄μ€ ν΅μμ¬λ₯Ό λκ³ νλ΄μ μ§ννλ―μ΄ μ»΄ν¨ν° κ°μ λνλ₯Ό νκΈ° μν΄ μ°λ¦¬λ νλ‘ν μ½μ΄λ κ²μ λ§λ€μ΄ μ¬μ©νκ² λ κ²μ΄λ€.
HTTPμ OSI 7κ³μΈ΅μμ μ ν리μΌμ΄μ κ³μΈ΅μ νλ‘ν μ½λ‘μ, μ λ’°κ° κ°λ₯ν νλ‘ν μ½μ΄λ©΄ 무μμ΄λ κ°λ₯νλ€.(μ΄λ‘ μ) λ³΄ν΅ TCP νΉμ TLSλ₯Ό ν΅ν΄ μ μ‘λλ€.
-
κ°λ¨νλ€!
HTTPλ μ¬λμ΄ μ½μ μ μμΌλ©° κ°λ¨νκ² κ³ μμ΄ λμλ€. HTTP/2κ° κΈ°μ‘΄ 1.1μ λΉν΄ λ§μ΄ 볡μ‘ν΄μ§κΈ΄ νμ§λ§, μ¬μ ν HTTP λ©μμ§λ₯Ό νλ μλ³λ‘ μΊ‘μννμ¬ κ°κ²°ν¨μ μ μ§νλ€.
-
νμ₯μ΄ κ°λ₯νλ€.
HTTP/1.0μμ μκ°λ HTTP ν€λλ HTTPλ₯Ό νμ₯νκ³ μ€ννκΈ° μ½κ² λ§λ€μ΄ μ£Όμλ€. ν΄λΌμ΄μΈνΈμ μλ²κ° μλ‘μ΄ ν€λμ λν΄ κ°λ¨ν ν©μλ₯Ό νλ€λ©΄, μΈμ λ μ§ μλ‘μ΄ κΈ°λ₯μ μΆκ° ν μ μλ€.
-
μνλ μμ§λ§, μΈμ μ μ‘΄μ¬!
HTTPλ μνλ₯Ό μ μ₯νμ§ μλλ€.(Stateless) λμΌν μ°κ²° μμμ λκ°μ μμ² μ¬μ΄μλ μ°κ²°κ³ 리λ μ‘΄μ¬νμ§ μλλ€. HTTPμ ν΅μ¬μ μνκ° μλ κ²μ΄μ§λ§, HTTP μΏ ν€λ₯Ό μ¬μ©νλ©΄ μνκ° μ‘΄μ¬νλ μΈμ μ λ§λ€μ΄ μ€λ€. ν€λ νμ₯μ±μ μ¬μ©νμ¬, λμΌν 컨ν μ€νΈμ μνλ₯Ό 곡μ νκΈ° μν΄ κ°κ°μ μμ²λ€μ μΈμ μ λ§λ€ μ μλλ‘ HTTP μΏ ν€κ° μΆκ°λλ€.
-
HTTPμ μ°κ²°
λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κΈ°μν΄ μλ‘ μ°κ²°νλ κ³Όμ μ μ ν리μΌμ΄μ κ³μΈ΅μ΄ μλ μ μ‘ κ³μΈ΅μμ μ΄λ£¨μ΄μ§λ―λ‘ HTTPμ μν μμ λ²μ΄λλ€. λ°λΌμ HTTPλ μ°κ²°μ μμ΄ μ λ’°ν μ μκ±°λ, μμ€μ΄ μλ(μ΅μνμΌλ‘ μ€λ₯λ νμ) λ°©λ²μ μꡬν μ λ°μμλ€.
μΈν°λ· μμμ κ°μ₯ μΌλ°μ μΈ μ μ‘ νλ‘ν μ½μ UDPμ TCPκ° μ‘΄μ¬νλ€. UDPλ μλ€μνΌ μμ€μ΄ μΌμ΄λ μ μλ μ μ‘ νλ‘ν μ½μ΄λ―λ‘ HTTPλ TCP νμ€μ μμ‘΄νλ€.
μμ λ§ν HTTPμ νΉμ§μ€ νλμΈ νμ₯μ΄ κ°λ₯νλ€λ λλΆμ κ³μν΄μ μΉμ λ§μ κΈ°λ₯λ€μ μ μ΄ν μ μλλ‘ μ§νν΄μλ€. κ³Όμ° μ΄λ€ κΈ°λ₯λ€μ΄ μ겨λ¬κ³ μ΄λ»κ² μ μ΄λ₯Ό νλ€λ κ²μΌκΉ?
-
μΊμ
HTTPλ‘ λ¬Έμκ° μΊμλλ λ°©μμ μ μ΄κ°λ₯νλ€. μλ²λ μΊμ λμκ³Ό κΈ°κ°μ ν΄λΌμ΄μΈνΈμ νλ‘μμκ² μ§μν μ μμΌλ©°, ν΄λΌμ΄μΈνΈμμλ μ μ₯λ λ¬Έμλ₯Ό 무μνλΌκ³ μ€κ°μ μ‘΄μ¬νλ μΊμ νλ‘μμκ² μ§μλ₯Ό ν μ μλ€.
-
Origin μ μ½μ¬ν μν
μ€λνκ³Ό λ€λ₯Έ νλΌμ΄λ²μ μΉ¨ν΄λ₯Ό λ§κΈ° μν΄, λΈλΌμ°μ μμλ μΉ μ¬μ΄νΈ κ°μ μ격ν λΆλ¦¬λ₯Ό κ°μ νλ€.(Same-origin policy) νμ§λ§ μ΄λ₯Ό HTTP ν€λλ₯Ό ν΅ν΄ μν μν¬ μ μμΌλ©°, μ΄λλΆμ λ¬Έμλ λ€λ₯Έ λλ©μΈμΌλ‘λΆν° μ λ¬λ μ 보λ₯Ό ν¨μΉμν¬ ν μ μλ€.
-
μΈμ¦
κΈ°λ³Έ μΈμ¦μ HTTPλ₯Ό ν΅ν΄
WWW-Authenticate
λλ μ μ¬ν ν€λλ₯Ό ν΅ν΄ μ 곡λκ±°λ HTTP μΏ ν€λ₯Ό ν΅ν΄ νΉμ μΈμ μ μ€μ νμ¬ μ΄λ£¨μ΄μ§ μ μλ€. -
νλ‘μμ ν°λλ§
λ³΄ν΅ HTTP μμ²μ λ€νΈμν¬ μ₯λ²½μ κ°λ‘μ§λ₯΄κΈ° μν΄ νλ‘μλ₯Ό ν΅ν΄ λκ°κ² λλλ°, λͺ¨λ νλ‘μκ° HTTPλ§ λμμ΄ κ°λ₯ν κ²μ΄ μλ μ’λ μ μμ€μμλ SOCKS νλ‘ν μ½ λ±λ λμμ΄ κ°λ₯νλλ‘ ν΄μ€λ€.
-
μΈμ
μΏ ν€μ μ¬μ©μΌλ‘ ν΄λΌμ΄μΈνΈμ μνλ₯Ό μλ²μ μ μ‘ ν μ μκ² λλ€. μ΄λ HTTPκ° μνκ° μλ νλ‘ν μ½μ΄μ§λ§, μΈμ μ λ§λ€μ΄ μ€ μ μκ² νλ€.
μΉμ μ΄κΈ° λͺ¨μ΅κ³Όλ λ¬λ¦¬ λ§€μ° λ³΅μ‘ν λμμ μꡬλ‘νλ λͺ¨μ΅μΌλ‘ μ§νλμλ€. κ·Έλ κΈ°μ λ λ§μ λ°μ΄ν°λ€μ΄ λ λ§μ μμ²μΌλ‘ μ£Όκ³ λ°λ λ°μ΄ν°μ μλ€μ΄ λ§μμ§κ² λμκ³ , HTTP/1.1λ‘ λ§μ κ·Έ λ§μ μμ κ°λΉνκΈ°μ νλ κ°μ΄ μ‘΄μ¬νλ€. HTTPμ κΈ°λ³Έ λμ λ°©μμ 보며 μ νλ μ§μ λν΄ μμ보μ.
HTTP/1.0μμ ν΄λΌμ΄μΈνΈλ μΆκ°μ μΈ μμ²μ νκΈ° μν΄μλ TCP μ°κ²°μ λκ³ λ€μ μ°κ²°μ λ§Ίκ³ ν΄μΌλ§ νλ€. λ°λΌμ μκ°κ³Ό μμ μΈ‘λ©΄μμ λ§μ λΉμ©μ΄ μμλμλ€.
HTTP/1.0μ λ¨μ μ 보μνκΈ° μν΄ μ§μμ μΈ μ°κ²°, νμ΄ν λΌμ΄λμ λμ νμ¬ κ³μν΄μ μ°κ²°μ λ§Ίκ³ λλ κ²μΌλ‘ μΈν μ€λ²ν€λλ₯Ό μ€μ΄κ² λμλ€.
μ§μμ μΈ μ°κ²°(Persistent Connection) μ νμ κ²½μ°μλ ν΄λΌμ΄μΈνΈμμ μλ΅μ λ°μ§ μλλΌλ ν΄λΉ μ°κ²°μ ν΅ν΄ μ¬λ¬ μμ²μΌ λ³΄λΌ μ μμΌλ―λ‘ μ΄μ λ³΄λ€ μ±λ₯μ΄ λ§μ΄ κ°μ λμλ€.
μΆμ² : HTTP/1.1 μ HTTP Pipelining κ³Ό Persistent Connection μ λνμ¬
μ°κ²°μ λμ§ μλ κ²λ§μΌλ‘λ λ§μ κ°μ μ΄ λμμ§λ§, λ λ€λ₯Έ λ¨μ μ μ¬μ ν μ‘΄μ¬νλ€. μλμ μΌμͺ½ κ·Έλ¦Ό(no pipelining)κ³Ό κ°μ΄ HTTP/1.1μ κ²½μ° κΈ°λ³Έμ μΌλ‘ νλμ ConnectionλΉ νλμ μμ²μ μ²λ¦¬νκ² μ€κ³λ₯Ό ν΄λμ λμ μ μ‘μ΄ λΆκ°λ₯νλ©° μμ²κ³Ό μλ΅μ΄ μμ°¨μ μΌλ‘ μ΄λ£¨μ΄μ§λ€.
μΆμ² : HTTP/1.1 μ HTTP Pipelining κ³Ό Persistent Connection μ λνμ¬
μ΄λ° μ μ 보μνκΈ° μν΄ 1.1μμλ Pipeliningμ΄λΌλ κΈ°λ²μ ν΅ν΄ μμ²μ μ°μν΄μ λ³΄λΌ μλ μλ€. μ΄λ₯Ό ν΅ν΄ νλμ Connectionμμλ λ€μμ μμ²κ³Ό μλ΅μ μ²λ¦¬νμ¬ λ€νΈμν¬ μ§μ°μ μ€μΌ μ μμ΄μ‘λ€.
νμ§λ§, μ΄λ λ¨μν μμ²λ€μ λν μλ΅ μ²λ¦¬λ₯Ό 미루λ λ°©λ²μ μ¬μ©ν κ²μ΄λ―λ‘ κ° μλ΅μ λν μ²λ¦¬λ μμ°¨μ μΌλ‘ μ²λ¦¬κ° λμ΄, 첫λ²μ§Έ μλ΅μ μ²λ¦¬κ° λ¦μ μλ‘ λ€μ μλ μλ΅μ μ§μ°λ μ λ°μ μλ€. μ΄λ₯Ό Head Of Line(HOL) Blocking
λΌκ³ λΆλ₯΄λ©° Pipeliningμ ν° λ¬Έμ μ μ΄λ€.
λν ν€λμ λ§μ μ€μ κ°λ€μ λ£μ΄ μμ²/μλ΅ λ°λλ³΄λ€ λ ν° κ°μ μ μ‘νλ κ²½μ°κ° μ‘΄μ¬νλ€.
μ΄μ κ°μ΄ HTTP/1.0, 1.1μ λ¨μ λ€μ ν΄κ²°νκΈ° μν λ°©λ²λ€μ κ°λ°ν΄μμΌλ κ·Όλ³Έμ μΈ λ¬Έμ λ μ¬μ ν ν΄κ²°ν μ μμλ€. κ·Έλ κΈ°μ ꡬκΈμμλ μ§μ°μ¨ κ΄μ μμ HTTPλ₯Ό κ³ μνν SPDY(NAVER D2 SPDY)λΌ λΆλ¦¬μ°λ νλ‘ν μ½μ ꡬννμλλ°, μ΄λ HTTP/2κ° μΈμμ λμ€κ² λ μ μλ λ°νμ λ§λ ¨νλ€.
"HTTP/2λ νλ‘ν μ½μ μμ ν λ€μ μμ±νλ κ²μ΄ μλ, μ±λ₯μ μ΄μ μ λκ³ μλ€." - HTTP/2 곡μ Github
κ³Όμ° μ΄λ ν νΉμ§λ€λ‘ HTTP/1.1μ λ¨μ λ€μ 보μνκ³ μμκΉ?
-
Multiplexed Streams
ν 컀λ₯μ μΌλ‘ λμμ μ¬λ¬κ° λ©μμ§λ₯Ό μ£Όκ³ λ°μ μ μμΌλ©°, μλ΅μ μμμ μκ΄ μμ΄ StreamμΌλ‘ μ£Όκ³ λ°λλ€. μ΄λ 1.1μμ Connection Keep-Alive, Pipelinigμ κ°μ μ μ΄λ€.
-
Stream Prioritization
Multiplexed Streams λΌλ νΉμ§μΌλ‘ μλ΅ μμλ₯Ό μκ΄μμ΄ StreamμΌλ‘ μ£Όκ³ λ°κ³ μλ€κ³ νλ€. λ§μ½, HTMLμ CSSκ° μ‘΄μ¬νλλ° CSSμ μλ΅μ΄ μ§μ°μ΄ λμ΄ λ λλ§μ΄ λ¦μ΄μ§λ€λ©΄ λ¬Έμ κ° λ°μν μ μλ€. λ°λΌμ, 2μμλ 리μμ€κ°μ μμ‘΄κ΄κ³(μ°μ μμ)λ₯Ό μ€μ ν μ μκ² νμ¬ ν΄λΉ λ¬Έμ λ₯Ό ν΄κ²°νλ€.
-
Server Push
1.1μμλ HTML λ¬Έμλ₯Ό μμ²νκ³ μλ΅μ λ°μ νμ νμ±μ νλ©° νμν 리μμ€λ₯Ό μ¬μμ²μ νλ€κ³ νλ€λ©΄, 2μμλ ν΄λΌμ΄μΈνΈκ° μμ²μ νμ§ μλλΌλ 미리 리μμ€λ₯Ό μ£Όλ λ°©λ²μΌλ‘ ν΄λΌμ΄μΈνΈμμ 컀λ₯μ μ μ΅μν ν μ μλλ‘ νλ€. μ΄λ PUSH_PROMISEλΌκ³ λΆλ₯΄λ©°, PUSH_PROMISEλ₯Ό ν΅ν΄ μλ²κ° μ μ‘ν 리μμ€μ λν΄μλ ν΄λΌμ΄μΈνΈλ μμ²μ νμ§ μλλ€.
-
Header Compression
λ°©λν ν€λ μ 보λ₯Ό μμΆνκΈ° μν΄ Header Tableκ³Ό Huffman Encoding κΈ°λ²μ μ¬μ©νλλ° μ΄λ₯Ό HPACK μμΆ λ°©μμ΄λΌ λΆλ₯Έλ€. λν, μ¬λ¬λ²μ μμ²μμ Static/Dynamic Header Table κ°λ μ μ¬μ©νμ¬ μ€λ³΅λ ν€λλ₯Ό κ²μΆνμ¬ μ 체λ₯Ό 보λ΄λ κ²μ΄ μλ ν€λ μ 보κ°λ§ μ μ‘νκ² λλ€.
HTTPSλ HTTP + Secure Socket μΌλ‘ κΈ°μ‘΄ HTTPλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ κ²μμ SSL(Secure Socket Layer) νλ‘ν μ½μ ν΅ν΄ λ°μ΄ν° μνΈνλ₯Ό μΆκ°ν κ²μ΄λ€.
TLS(Transport Layer Security)λ‘ μκ³ μλ μ¬λμ΄ μμν λ° μ΄λ SSLμ μ κ·Έλ μ΄λ λ²μ μ΄λ©° νμ€νκ° λλ©΄μ μ΄λ¦μ΄ λ³κ²½λμλ€. νμ§λ§ μμ§λ TLS보λ€λ SSLμ΄λ μ΄λ¦μΌλ‘ λ λ리 μ¬μ©λκ³ μλ€.
HTTPλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μ λλ μ£Όλ‘ νλ¬Έ(text)μ μ¬μ©νλλ°, μ΄λ κ΅μ₯ν μνν μΌμ΄λ€.
μλ₯Όλ€μ΄ μ΄λ ν μ¬μ΄νΈμ λ‘κ·ΈμΈμ νλ€κ³ νμ. λ‘κ·ΈμΈμ νκΈ° μν΄μ ν΄λΌμ΄μΈνΈλ μλ²μκ² μμ΄λ, λΉλ°λ²νΈλ₯Ό λκΈ°κ² λλ€. μ΄ κ³Όμ μμ ν΄μ»€κ° ν΄λΉ λ°μ΄ν°λ₯Ό μ€κ°μ κ°λ‘μ± μ μμΌλ©°, μνΈνκ° λμ΄μμ§ μμ κ΅μ₯ν μΉλͺ μ μ΄λ€.
λ°λΌμ, μ΄λ₯Ό 극볡νκ³ μ HTTPμ SSLμ΄λΌλ νλ‘ν μ½μ μ¬μ©νμ¬ λ°μ΄ν°μ μνΈνλ₯Ό μ§ννλ€.
SSLμμλ 보μκ³Ό μ±λ₯μμ μ΄μ λ‘ λκ°μ§ μνΈν κΈ°λ²μ νΌμ©ν΄μ μ¬μ©νλλ°, SSLμ΄ μ΄λ»κ² λμνλμ§μ λν΄μ μκΈ° μν΄μλ ν΄λΉ μνΈν κΈ°λ²μ μκ³ μμ΄μΌ νλ€.
-
λμΉν€
λμΉν€λ λ§ κ·Έλλ‘ μνΈν/볡νΈν μμ λμΌν ν€λ₯Ό μ¬μ©νλ μνΈν λ°©μμ λ§νλ€. μ¦,
Jongnan
μ΄λΌλ ν€λ₯Ό μ¬μ©νμ¬ μνΈνλ₯Ό νλ€λ©΄,Jongnan
μ μ¬μ©νμ¬ λ³΅νΈνλ₯Ό νλ€. -
곡κ°ν€
λμΉν€μμμ ν° λ¨μ μ κ°μ ν€λ₯Ό μ¬μ©νκ³ μκΈ°λλ¬Έμ ν΄μ»€κ° ν€λ₯Ό μ»λλ€λ©΄, μ½κ² 볡νΈνλ₯Ό ν μ μλ€λ κ²μ΄λ€. μ΄ λλ¬Έμ λμ¨ μνΈν λ°©μμ΄ λ°λ‘ 곡κ°ν€ λ°©μμ΄λ€.
곡κ°ν€ λ°©μμ λκ°μ ν€λ₯Ό κ°μ§κ² λλλ°, νλλ μνΈνλ₯Ό νλ ν€, λ λ€λ₯Έ νλλ 볡νΈνλ₯Ό νλ ν€μ΄λ€. μ΄ λ μμ λ§ κ°μ§κ³ μλ ν€λ₯Ό λΉκ³΅κ°ν€, νμΈμκ² μ 곡λλ ν€λ₯Ό 곡κ°ν€λΌκ³ νλ€. 곡κ°ν€λ₯Ό μ 곡 λ°μ νμΈμ 곡κ°ν€λ₯Ό μ΄μ©νμ¬ μ 보λ₯Ό μνΈν νκ³ μ΄λ₯Ό μ μ‘νλ€. μνΈνλ μ 보λ₯Ό λΉκ³΅κ°ν€λ‘ 볡νΈννλ λ°©μμΌλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λλ€. μ΄ κ³Όμ μμ 곡κ°ν€κ° ν΄μ»€μ μν΄ νμ·¨ λΉν΄λ μνΈνλ§ κ°λ₯νλ―λ‘ λμΉν€μ λΉν΄ μμ νλ€.
ν΄λΉ λ°©μμ μμ©ν΄μ λ€μκ³Ό κ°μ΄ μ¬μ©ν μ λ μλ€.
- λΉκ³΅κ°ν€μ μμ μκ° λΉκ³΅κ°ν€λ₯Ό μ΄μ©ν΄μ μ 보λ₯Ό μνΈν ν λ€μ 곡κ°ν€μ ν¨κ» μ μ‘
- 곡κ°ν€λ₯Ό μ΄μ©νμ¬ μνΈνλ μ 보λ₯Ό 볡νΈν
μ΄μ κ°μ λ°©μμΌλ‘ λ°μ΄ν°λ₯Ό μ μ‘νλλ°, μ€κ°μ ν΄λΉ ν€κ° νμ·¨λΉνμ¬ μ λ³΄κ° λ ΈμΆμ΄ λ μ μλ€.
κ·Έλ°λ° μ μνΈνλ₯Ό νλ κ²μΈκ°?
μ΄ λ°©μμ μ£Όμ λͺ©μ μ μ μμ 보μ₯νλλ° μλ€. μνΈνλ λ°μ΄ν°λ₯Ό 곡κ°ν€λ₯Ό κ°μ§κ³ 볡νΈν ν μ μλ€λ κ²μ κ·Έ λ°μ΄ν°κ° 곡κ°ν€μ μμ μ΄λ£¨λ λΉκ³΅κ° ν€μ μν΄ μνΈν λμλ€λ κ²μ μλ―Ένλ€. μ¦, 곡κ°ν€κ° λ°μ΄ν°λ₯Ό μ 곡ν μ¬λμ μ μμ 보μ₯ν΄μ£Όλ κ²μ΄λ€.
μ΄κ° λ°λ‘
μ μ μλͺ
μ΄λ€.
SSL νλ‘ν μ½μ μ¬μ©νκΈ° μν΄μλ μΈμ¦μκ° νμνλ€. μ΄λ μ 3μ(CA)κ° ν΄λΌμ΄μΈνΈμ μλ²κ°μ ν΅μ μ 보μ¦ν΄μ£Όλ μ μ λ¬Έμμ΄λ€. μ΄λ¬ν μΈμ¦μλ ν¬κ² 2κ°μ§λ‘ ꡬλΆλμ΄ μ§λ€.
-
μλΉμ€ μ 보(μΈμ¦μλ₯Ό λ°κΈν CA, μλΉμ€ λλ©μΈ λ±)
ν΄λΌμ΄μΈνΈκ° μ μν μλ²κ° μ μ ν μλ²μΈμ§μ λν λ΄μ©
-
μλ²μΈ‘ 곡κ°ν€(곡κ°ν€ λ΄μ©, 곡κ°ν€ μνΈν λ°©λ²)
ν΅μ μ μ¬μ©λ 곡κ°ν€μ μνΈν λ°©μ
μ΄ λ΄μ©λ€μ CAμ μν΄ λΉκ³΅κ°ν€λ₯Ό μ¬μ©νμ¬ μνΈνλ₯Ό νκ³ , μλ²λ μ΄λ₯Ό κ°μ§κ³ μμΌλ©΄μ ν΄λΌμ΄μΈνΈμκ² μ¦λͺ νκΈ° μν΄ μ λ¬νλ€. μ΄ν ν΄λΌμ΄μΈνΈλ μ΄ μΈμ¦μκ° μ λ’°ν μ μλ κ²μΈμ§λ₯Ό κ²μ¦ν λ€ ν΅μ μ μμνκ² λλ€.
μ΄λ¬ν μΈμ¦μλ₯Ό μ 곡νλ κΈ°μ λ€μ΄ μλλ° μ΄λ₯Ό CA(Certificate authority) νΉμ Root CertificateλΌκ³ λΆλ₯Έλ€. CAλ μ무 κΈ°μ μ΄λ ν μ μλ κ²μ΄ μλ μ λ’°μ±μ΄ λμ κΈ°μ λ€λ§ μ°Έμ¬κ° κ°λ₯νλ€. νμ§λ§ κ°λ° νΉμ μ¬μ μΈ λͺ©μ μ μν΄ SSLμ μνΈν κΈ°λ₯μ μ¬μ©νλ€λ©΄ μ§μ CAμ μν λ ν μ μμ§λ§ κ²½κ³ λ¬Έκ΅¬λ μ¬λΌμ§μ§ μλλ€.
λΈλΌμ°μ μμλ μΈμ¦μλ₯Ό μ΄ν΄νλλ° CA 리μ€νΈλ₯Ό κ°μ§κ³ μμΌλ©° 미리 νμ μ νκ³ μλ€. μ¦, 곡μΈλ CAλ§ ν΄λΉ 리μ€νΈμ λ€μ΄κ° μ μμΌλ©° λΈλΌμ°μ λ CA 곡κ°ν€λ₯Ό μ΄λ―Έ μκ³ μλ μ μ΄λ€.
-
μΉ λΈλΌμ°μ κ° μλ²μ μ μν λ, μλ²λ λ¨Όμ μΈμ¦μλ₯Ό ν΄λΌμ΄μΈνΈμκ² μ 곡
-
λΈλΌμ°μ λ μ΄ μΈμ¦μκ° CA 리μ€νΈμ μλμ§ νμΈ
-
ν¬ν¨μ΄ λμ΄μλ€λ©΄ CAμ 곡κ°ν€λ₯Ό μ΄μ©νμ¬ μΈμ¦μλ₯Ό 볡νΈν
λΈλΌμ°μ μ μ‘΄μ¬νλ 곡κ°ν€λ‘ μΈμ¦μλ₯Ό 볡νΈν ν μ μλ€λ κ²μ ν΄λΉ μΈμ¦μκ° CAμ λΉκ³΅κ°ν€λ‘ μνΈν λμλ€λ κ²μ μλ―Ένλ―λ‘ ν΄λΉ μ¬μ΄νΈλ μμ νλ€λ κ²μ μλ―Έ
μμμ SSLμ΄ λμνκΈ° μ΄μ μ μΌμ΄λλ μΌλ€μ μμ보μλ€. μ κ³Όμ λ€μ΄ λͺ¨λ λλκ³ λμ ν΅μ μ νκ² λλλ° μ΄λ€ λ°©μμΌλ‘ νκ²λλμ§ μμ보μ.
TCPμμ μ°κ²°μ νκΈ° μν΄ 3way-handshakingμ μ¬μ©νλ― SSLμμλ μ΄λ₯Ό ν΅ν΄ μ°κ²°μ λ§Ίμ§λ§, μμμ μΈκΈν μΈμ¦ κ³Όμ μ΄ μΆκ°λ‘ μ΄λ£¨μ΄μ§κ² λλ€.
-
ν΄λΌμ΄μΈνΈκ° μλ²μ μ μ(Client Hello)
- ν΄λΌμ΄μΈνΈμΈ‘μμ μμ±ν λλ€ λ°μ΄ν°
- ν΄λΌμ΄μΈνΈκ° μ§μνλ μνΈν λ°©μλ€(μ§μνλ μνΈν λ°©μμ΄ λ€λ₯Ό μ μκΈ° λλ¬Έ)
- μΈμ μμ΄λ(κΈ°μ‘΄ μΈμ μ μ¬νμ© νκΈ° μν΄)
-
μλ²μμλ μ΄μ λν μλ΅μ 보λ(Server Hello)
- μλ²μΈ‘μμ μμ±ν λλ€ λ°μ΄ν°
- μλ²κ° μ νν ν΄λΌμ΄μΈνΈμ μνΈν λ°©μ
- μΈμ¦μ
-
ν΄λΌμ΄μΈνΈλ μλ²μ μΈμ¦μλ₯Ό νμΈ
- λΈλΌμ°μ μ μ μ₯λμ΄μλ CA 리μ€νΈλ₯Ό νμΈνλ©° μΈμ¦μλ₯Ό 볡νΈν
- μλ‘ μ£Όκ³ λ°μ λλ€ λ°μ΄ν°λ‘
pre master secret
μ΄λ κ°μ μμ±(μ λ λ ΈμΆ X) pre master secret
κ°μ μΈμ¦μ λ΄λΆμ μλ 곡κ°ν€λ‘ μνΈννμ¬ μλ²λ‘ μ μ‘
-
session key μμ±
-
μλ²μμλ μνΈνλ
pre master secret
λ₯Ό μμ μ λΉκ³΅κ°ν€λ‘ 볡νΈν -
μλ²μ ν΄λΌμ΄μΈνΈλ μΌλ ¨μ κ³Όμ μ ν΅ν΄
master secret
κ°μΌλ‘ λ³κ²½ -
master secret
κ°μΌλ‘session
ν€λ₯Ό μμ±(μ΄λ‘ λ°μ΄ν° μνΈν) -
ν΄λΌμ΄μΈνΈμ μλ²λ
Handshake
λ¨κ³μ μ’ λ£λ₯Ό μλ‘μκ² μλ¦Ό
-
μΈμ
λ¨κ³λ μ€μ λ‘ ν΄λΌμ΄μΈνΈμ μλ²κ° λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ λ¨κ³μ΄λ€. μ΄ λ μ€μν μ μ μ£Όκ³ λ°λ λ°μ΄ν°λ μ λ¨κ³μμ μμ±ν session key
λ₯Ό μ΄μ©νμ¬ μνΈν/볡νΈν νλ€.
μ νκ°μ§ λ°©μμ μ νν΄μ μ¬μ©νμ§ μκ³ λκ°μ§ λ°©μμ μμ΄μ μ¬μ©νλ κ²μΌκΉ?
λμΉν€ λ°©μλ§ μ¬μ©νλ€λ©΄ μμμ μΈκΈν κ²κ³Ό κ°μ΄ λ ΈμΆμ΄ λμμ λ, μμ²λ νΌν΄λ₯Ό μ μ μ μλ€. κ·Έ λ°λλ‘ κ³΅κ°ν€ λ°©μμΌλ‘λ§ μ¬μ©νλ€λ©΄ λμΉν€ λ³΄λ€ λ 볡μ‘νλ―λ‘ μ¬λ¬λͺ¨λ‘ λΉμΌ λΉμ©μ λ΄μΌνλ€. κ·Έλ κ² λλ€λ©΄ μ μμ΄ λͺ°λ¦¬λ μλ²μ κ²½μ° λ§μ λΉμ©μ μ§λΆν΄μΌνλ€.
λ°λΌμ, μλλ λ리μ§λ§ μμ ν 곡κ°ν€ λ°©μμΌλ‘ λμΉν€λ₯Ό μνΈννκ³ , μ€μ λ°μ΄ν°μ κ²½μ° ν΄λΉ λμΉν€λ₯Ό μ΄μ©ν΄μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°λ κ²μ΄λ€.
λ°μ΄ν°μ μ μ‘μ΄ λͺ¨λ μλ£ λμμμμ SSL ν΅μ μ΄ λλ¬μμ μλ‘μκ² μλ¦°λ€. μ΄ λ ν΅μ μ μ¬μ©ν λμΉν€λ νκΈ°νλ€.