๐ HTTPS๋ ์ 3์ ์ธ์ฆ, ๊ณต๊ฐํค ์ํธํ, ๋น๋ฐํค ์ํธํ๋ฅผ ์ฌ์ฉํจ
1. ์ 3์ ์ธ์ฆ : ๋ฏฟ์ ์ ์๋ ์ธ์ฆ๊ธฐ๊ด์ ๋ฑ๋ก๋ ์ธ์ฆ์๋ง ์ ๋ขฐ
2. ๊ณต๊ฐํค ์ํธํ : ๋น๋ฐํค๋ฅผ ๊ณต์ ํ๊ธฐ ์ํด ์ฌ์ฉ
3. ๋น๋ฐํค ์ํธํ : ํต์ ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋๋ฐ ์ฌ์ฉ
ํด๋ผ์ด์ธํธ 1)
Client Hello : ํด๋ผ์ด์ธํธ๊ฐ ๋จผ์ ์๋ฒ์ ์ ์ํด์ ๋ง์ ๊ฑด๋ค.
๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์์ naver.com์ ์น๋ฉด ๋ด ๋ธ๋ผ์ฐ์ ๋ ๋ค์ด๋ฒ ์น ์๋ฒ์ ์ ์์ ์๋ํจ. TCP์ฐ๊ฒฐ์ ์ํ 3-way handshake๋ฅผ ์ํํ ๋ธ๋ผ์ฐ์ ๋ ๋ค์ด๋ฒ๊ฐ HTTPS๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์๊ฒ ๋๊ณ ๋ค์์ ์ ๋ณด๋ฅผ ๋ณด๋
์๋ฒ 2)
Server Hello : ์๋ฒ ๋ํ ์์ ์ธ์ฌ์ ์๋ตํ๋ฉด์, ๋ค์ ์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ๊ณตํจ.
ํด๋ผ์ด์ธํธ 3)
๋ธ๋ผ์ฐ์ ๋ ์๋ฒ์ SSL ์ธ์ฆ์๊ฐ ๋ฏฟ์๋งํ์ง ํ์ธํจ
๋ฑ๋ก๋ CA๊ฐ ์๋๊ฑฐ๋, ๋ฑ๋ก๋ CA๊ฐ ๋ง๋ ์ธ์ฆ์์ฒ๋ผ ๊พธ๋ช๋ค๋ฉด ๊ฒฝ๊ณ
ํด๋ผ์ด์ธํธ 4)
๋ธ๋ผ์ฐ์ ๋ ์์ ์ด ์์ฑํ ๋์์ ์๋ฒ์ ๋์๋ฅผ ์ฌ์ฉํ์ฌ premaster secret์ ๋ง๋ฌ
์น ์๋ฒ ์ธ์ฆ์์ ๋ธ๋ ค์จ ์น ์ฌ์ดํธ์ ๊ณต๊ฐํค๋ก ์ํธํํ์ฌ ์๋ฒ๋ก ์ ์กํจ
์๋ฒ 5)
์๋ฒ๋ ์ฌ์ดํธ์ ๋น๋ฐํค๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๋ณด๋ธ premaster secret๊ฐ์ ๋ณตํธํ
๋ณตํธํํ ๊ฐ์ master secret ๊ฐ์ผ๋ก ์ ์ฅํจ. ์ด๊ฒ์ ์ฌ์ฉํด์ ๋ฐฉ๊ธ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ง๋ค์ด์ง ์ฐ๊ฒฐ์ ๊ณ ์ ํ ๊ฐ์ ๋ถ์ฌํ๊ธฐ ์ํ session key๋ฅผ ์์ฑํจ. ์ธ์
ํค๋ ๋์นญํค ์ํธํ์ ์ฌ์ฉํ๊ณ ์ด๊ฑธ ์ฌ์ฉํด์ ๋ธ๋ผ์ฐ์ ์ ์๋ฒ ์ฌ์ด์ ์ฃผ๊ณ ๋ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ๊ณ ๋ณตํธํํจ
์๋ฒ&ํด๋ผ์ด์ธํธ 6)
SSL handshake๋ฅผ ์ข
๋ฃํ๊ณ HTTPS ํต์ ์ ์์ํจ
๋ธ๋ผ์ฐ์ ์ ์๋ฒ๋ SSL Handshake๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ๋์๊ณ ์ด์ ์น ์์์ ๋ฐ์ดํฐ๋ฅผ ์ธ์
ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ/๋ณตํธํํ๋ฉฐ HTTPS ํ๋กํ ์ฝ์ ํตํด ์ฃผ๊ณ ๋ฐ์ ์ ์์
ํด๋ผ์ด์ธํธ๊ฐ TCP 3-way handshake๋ฅผ ์ํํ ์ดํ Client Hello๋ฅผ ์ ์กํจ. ์๋ฒ๋ ์ธ์ฆ์๋ฅผ ๋ณด๋ด๊ณ ํด๋ผ์ด์ธํธ๋ ๋ฐ์ ์ธ์ฆ์๋ฅผ ์ ๋ขฐํ๊ธฐ ์ํด์ ๋ฑ๋ก๋ ์ธ์ฆ๊ธฐ๊ด์ธ์ง๋ฅผ ํ์ธํจ.
์ด ์ธ์ฆ์๋ ์ธ์ฆ๊ธฐ๊ด์ ๊ฐ์ธํค๋ก ์ํธํ๋์ด์๊ณ , ๊ณต๊ฐํค๋ก ๊ฒ์ฆํ ์ ์์(๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋์ด ์์) ํด๋ผ์ด์ธํธ๋ ์ฌ์ดํธ์ ์ ๋ณด์ ์๋ฒ์ ๊ณต๊ฐํค๋ฅผ ์ป์ ์ ์์.
์๋ฒ์ ๊ณต๊ฐํค๋ก ํต์ ์ ์ฌ์ฉํ ๋น๋ฐํค๋ฅผ ์ํธํํด์ ์๋ฒ์ ๋ณด๋. ์๋ฒ๋ ์ด๋ฅผ ๊ฐ์ธํค๋ก ํ์ธํ๊ณ ์ดํ ํต์ ์ ๊ณต์ ๋ ๋น๋ฆฌํค๋ก ์ํธํ๋์ด ํต์ ํจ.
์ 3์ ์ธ์ฆ : ์ธ์ฆ์, ์ธ์ฆ ๊ธฐ๊ด/๊ณต๊ฐํค ์ํธํ : ์ธ์ฆ์, ๋น๋ฐํค ๊ณต์ /๋น๋ฐํค ์ํธํ : ํต์ ๊ณผ์
๊ณต๊ฐํค ๋ฐฉ์์ ์/๋ณตํธํ ๊ณผ์ ์์ ๋ง์ ์ปดํจํฐ ํ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์. ์ฑ๋ฅ์ ๋จ์ ์ด ์๊น ๊ทธ๋์ ํผํฉํด์ ์ฌ์ฉ..
๋ง์ฝ ๊ณต๊ฐํค๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด ๋ง์ ์ ์์ด ๋ชฐ๋ฆฌ๋ ์๋ฒ๋ ๋งค์ฐ ํฐ ๋น์ฉ์ ์ง๋ถํด์ผ ํจ. ๋ฐ๋๋ก ๋์นญํค๋ ์ํธ๋ฅผ ํธ๋ ์ด์ ๋ฅผ ์๋์๊ฒ ์ ์กํด์ผ ํ๋๋ฐ ์ด๊ฑธ ๊ทธ๋ฅ ์ ์กํ๋ฉด ์ํํจ. ๊ทธ๋์ ์๋๋ ๋๋ฆฌ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ๊ณต๊ฐํค ๋ฐฉ์์ผ๋ก ๋์นญํค๋ฅผ ์ํธํํ๊ณ ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋์นญํค๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์
์ถ์ฒ : https://brunch.co.kr/@sangjinkang/38
https://github.com/ksundong/backend-interview-question