https://github.com/JulSaMo/CS-start/pull/31
์ฌ๊ธฐ์ HTTPS์ ๋์๊ณผ์ ์ ์ ๋ก๋ํ๋๋ฐ, ๋๋ฃ๋ค์๊ฒ ๋ช ํํ ์ ๋ฌ์ด ๋์ง ์์๋ค. ๋ค์ ์ฐจ๊ทผ์ฐจ๊ทผ ์ค๋ช ํด๋ณด์!!
๐ HTTP์ ๋์๊ณผ์
HTTP๋ stateless ํ ํ๋กํ ์ฝ ์ด๋ค. ๊ทธ๋์ ๊ฐ ์์ฒญ์ ๋ ๋ฆฝ์ ์ธ ํธ๋์ญ์ ์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์์ฒญํ๊ธฐ ์ ์ Connectํ๋ ๊ณผ์ ์ด ํ์ํ๊ณ ์๋ฒ์ ์๋ต์ ๋ฐ์ผ๋ฉด Closeํ๋ ๊ณผ์ ์ด ํ์ํ๋ค.
์๋ฒ ์ ์ →ํด๋ผ์ด์ธํธ →์์ฒญ → ์๋ฒ → ์๋ต → ํด๋ผ์ด์ธํธ → ์ฐ๊ฒฐ close
๐ HTTPS ๋์ ๋ฐฉ์
๊ณต๊ฐํค(๋น๋์นญํค) ์ํธํ ๋ฐฉ์์ด๋ ๋์นญํค ์ํธํ๋ฐฉ์์ ์ฅ์ ์ ํ์ฉํด์ ํ์ด๋ธ๋ฆฌ๋๋ก ์ฌ์ฉํ๋ค. (๋ฐ์ดํฐ๋ฅผ ๋์นญํค ๋ฐฉ์์ผ๋ก ์๋ณตํธํ ํ๊ณ , ๊ณต๊ฐํค ๋ฐฉ์์ผ๋ก ๋์นญํค๋ฅผ ์ ๋ฌํ๋ค)
CA : Certificate Authority , ์ฌ์ดํธ๊ฐ ์ ํํ ์ฌ์ดํธ๊ฐ ๋ง๋์ง ํ์ธํด์ฃผ๋ ๊ณต์ธ๋ ๋ฏผ๊ฐ๊ธฐ์ ๋ค. Chorem, ํ์ด์ดํญ์ค, ์ฌํ๋ฆฌ ๋ฑ์ ์ด CA๋ค์ ๋ชฉ๋ก์ด ๋ด์ฅ๋์ด ์๊ธฐ ๋๋ฌธ์ URL์ ํ๊ณ ๋ค์ด๊ฐ ๋ ์ธ์ฆ ๊ธฐ๊ด์์ ํ์ธ์ ํด์ฃผ๋ ๊ฒ!
1๏ธโฃ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ ์ ์ํด์ Handshaking ๊ณผ์ ์์ ์๋ก ํ์
- Client Hello
- ํด๋ผ์ด์ดํธ๊ฐ ์๋ฒ์๊ฒ ์ ์กํ ๋ฐ์ดํฐ
- ํด๋ผ์ด์ธํธ ์ธก์์ ์์ฑํ ๋๋ค๋ฐ์ดํฐ
- ํด๋ผ์ด์ธํธ-์๋ฒ ์ํธํ ๋ฐฉ์์ ํต์ผํ๊ธฐ ์ํด์ ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉํ ์ ์๋ ์ํธํ ๋ฐฉ์ ์ฑํ
- ์ด์ ์ ์ด๋ฏธ handshaking ๊ธฐ๋ก์ด ์๋ค๋ฉด ์์ ์ ์ฝ์ ์ํด์ ๊ธฐ์กด ์ธ์ ์ฌํ์ฉ์ ํ๊ธฐ ์ํ ์ธ์ ID
- ํด๋ผ์ด์ดํธ๊ฐ ์๋ฒ์๊ฒ ์ ์กํ ๋ฐ์ดํฐ
- Server Hello
- Client Hello ์ ๋ํ ์๋ต์ผ๋ก ์ ์กํ ๋ฐ์ดํฐ
- ์๋ฒ์ธก์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ
- ์๋ฒ๊ฐ ์ ํํ ํด๋ผ์ด์ธํธ์ ์ํธํ๋ฐฉ์
- SSL์ธ์ฆ์
- Client Hello ์ ๋ํ ์๋ต์ผ๋ก ์ ์กํ ๋ฐ์ดํฐ
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