HTTPS & SSL ์ธ์ฆ์
HTTP VS HTTPS
HTTP๋ Hypertext Transfer Protocol์ ์ฝ์๋ค. ์ฆ Hypertext์ธ HTML์ ์ ์กํ๊ธฐ ์ํ ํต์ ๊ท์ฝ์ ์๋ฏธํ๋ค.
HTTPS์ ๋ง์ง๋ง S๋ OverSecure Socket Layer์ ์ฝ์๋ก ๋ณด์์ด ๊ฐํ๋ HTTP๋ผ๊ณ ํ ์ ์๋ค. HTTP๋ ์ํธํ๋์ง ์์ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ฃผ๊ณ ๋ฐ๋ ๋ฉ์ธ์ง๋ฅผ ๊ฐ์ฒญํ๋๊ฒ์ด ๋งค์ฐ ์ฌ์์ ์
์์ ์ธ ๊ฐ์ฒญ์ด๋ ๋ฐ์ดํฐ ๋ณ์กฐ๊ฐ ์ผ์ด๋ ์ ์๋ค. ์ด๋ฅผ ๋ณด์ํ๊ฒ์ด HTTPS์ด๋ค.
HTTPS & SSL
HTTP๋ SSL/TLS ์์์ ์๋ํ๋ ๊ฒ์ด๊ณ , HTTP๊ฐ SSL์ ์ด์ฉํ๋ค๋ฉด HTTPS๊ฐ ๋๋๊ฒ์ด๋ค.
SSL & TLS
SSL์ ๋ค์ค์ผ์ดํ์ ์ํด์ ๋ฐ๋ช ๋์๊ณ , ์ ์ฐจ ์ฌ์ฉํ๊ฒ ๋๋ฉด์ ํ์คํ ๊ธฐ๊ตฌ์ธ IETF์ ๊ด๋ฆฌ๋ก ๋ณ๊ฒฝ๋๋ฉด์ TLS๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ฐ๋์๋ค. ์ ์ ๋ช ์นญ์ TLS์ด์ง๋ง SSL์ด๋ผ๋ ์ด๋ฆ์ด ํจ์ฌ ๋ง์ด ์ฌ์ฉ๋๊ณ ์๋ค.
SSL์ ๋์ ๋ฐฉ๋ฒ
ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ํต์ ํ ๋ ๊ฐ์ฅ ์ด์์ ์ธ ๋ฐฉ๋ฒ์ ๊ณต๊ฐํค ๋ฐฉ์์ผ๋ก ํต์ ์ ํ๋ ๊ฒ์ด๋ค. ๊ณต๊ฐํค๋ ์๋๋ฐฉ์๊ฒ ํค๋ฅผ ์ ๋ฌํ ๋ ๊ณต๊ฐ๋ ํค๊ฐ ์ ์ค๋๋๋ผ๊ณ ์ค๊ฐ์ ๊ฐ๋ก์ฑ์ ๋ณต๊ตฌํ ์ ์๋ค๋ ํน์ง์ด ์๋ค. ํ์ง๋ง ๊ณต๊ฐํค ๋ฐฉ์์ ์ํธํํ๊ณ ๋ณตํธํํ๋ ๊ณผ์ ์์ ์ปดํจํ ๋ฅ๋ ฅ์ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐํค์ ๋์นญํค๋ฅผ ํผํฉํด์ ์ฌ์ฉํ๋ค. ๋์นญํค ๋ฐฉ์์ ๊ณต๊ฐํค๋ณด๋ค ์ปดํจํ ๋ฅ๋ ฅ์ ๋ ์ฌ์ฉํ๋ค.
- ์ค์ ๋ฐ์ดํฐ : ๋์นญํค
- ๋์นญํค์ ํค : ๊ณต๊ฐํค
์ค์ ์ปดํจํฐ๋ผ๋ฆฌ ๋คํธ์ํฌ๋ก ํต์ ํ ๋๋ ๋ด๋ถ์ ์ผ๋ก 3๊ฐ์ง ๋จ๊ณ๊ฐ ์๋ค.
์ ์(Handshake) -> ์ ์ก -> ์ธ์ ์ข ๋ฃ
1. ์ ์ (Handshake)
์ด ๊ณผ์ ์ ํตํด์ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์๋ก๊ฐ ์ด๋ค ์ํ์ธ์ง๋ฅผ ํ์
ํ๋ค๊ณ ํ ์ ์๋ค. ๊ฐ์ฅ ์ค์ํ ์ผ์ ์๋ฒ์ ์ธ์ฆ์๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ์กํ๊ณ , ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ผ๋ฆฌ ์๋ก ์์ ๋ค์ ์ํธํ ๊ธฐ๋ฒ์ ์๋ ค์ค๋ค.
๊ณผ์ ์ ๋ณด๋ฉด
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ํ๋ค. ์ด ๋จ๊ณ๋ฅผ Client Hello๋ผ๊ณ ํ๋ค. ์ด ๋จ๊ณ์์ ์๋์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ํด๋ผ์ด์ธํธ ์ธก์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ
- ํด๋ผ์ด์ธํธ๊ฐ ์ง์ํ๋ ์ํธํ ๋ฐฉ์๋ค(ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ง์ํ๋ ์ํธํ ๋ฐฉ์๋ค์ด ์๋ก ๋ค๋ฅด๊ธฐ ๋๋ฌธ์)
- ์ธ์ ์์ด๋
์๋ฒ๋ Client Hello์ ๋ํ ์๋ต์ผ๋ก Server Hello๋ฅผ ํ๊ฒ ๋๋ค. ์ด ๋จ๊ณ์์ ์๋์ ๊ฐ์ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ์๋ฒ์ธก์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ
- ์๋ฒ๊ฐ ์ ํํ ํด๋ผ์ด์ธํธ์ ์ํธํ ๋ฐฉ์
- ์ธ์ฆ์
ํด๋ผ์ด์ธํธ๋ ์๋ฒ์ ์ธ์ฆ์๊ฐ ์ด๋ค CA(์ธ์ฆ๊ธฐ๊ด)์ ์ํด์ ๋ฐ๊ธ๋ ๊ฒ์ธ์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด์ ๋ธ๋ผ์ฐ์ ์ ๋ด์ฅ๋์ด์๋ CA(์ธ์ฆ๊ธฐ๊ด) ๋ฆฌ์คํธ๋ฅผ ํ์ธํ๊ณ ์๋ค๋ฉด ๊ฒฝ๊ณ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ค. ์ธ์ฆ์๊ฐ CA(์ธ์ฆ๊ธฐ๊ด)์ ์ํด์ ๋ฐ๊ธ๋ ๊ฒ์ธ์ง๋ฅผ ํ์ธํ๊ธฐ ์ํด์ ํด๋ผ์ด์ธํธ์ ๋ด์ฅ๋ CA(์ธ์ฆ๊ธฐ๊ด)์ ๊ณต๊ฐํค๋ฅผ ์ด์ฉํด์ ์ธ์ฆ์๋ฅผ ๋ณตํธํ ํ๊ณ , ์ฑ๊ณตํ๋ค๋ฉด ์ธ์ฆ์๋ CA(์ธ์ฆ๊ธฐ๊ด)์ ๊ฐ์ธํค๋ก ์ํธํ๋ ๋ฌธ์์์ด ์์์ ์ผ๋ก ๋ณด์ฆ๋๊ณ , ์ธ์ฆ์๋ฅผ ์ ์กํ ์๋ฒ๋ฅผ ๋ฏฟ์ ์ ์๊ฒ ๋๋ค.
ํด๋ผ์ด์ธํธ๋ 1๋ฒ์ ํตํด์ ๋ฐ์ ์๋ฒ์ ๋๋ค ๋ฐ์ดํฐ์ ํด๋ผ์ด์ธํธ๊ฐ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํด์ pre master secret์ด๋ผ๋ ํค๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์ฆ์์ ์๋ ๊ณต๊ฐํค๋ฅผ ์ด์ฉํด pre master secret๊ฐ์ ์ํธํํด์ ์๋ฒ๋ก ์ ์กํจ์ผ๋ก์จ ์ 3์์๊ฒ ๋ ธ์ถ๋์ง ์๊ณ ์์ ํ๊ฒ ์๋ฒ๋ง ์์ ์ ๋น๊ณต๊ฐํค๋ก ๋ณตํธํ ํ ์ ์๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ๋ pre master secret๊ฐ์ ๊ณต์ ํ๊ฒ ๋๊ณ , ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ๋ชจ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ master secret๊ฐ์ผ๋ก ๋ง๋ ๋ค. master secret์ session key๋ฅผ ์์ฑํ๋๋ฐ ์ด ๊ฐ์ ์ด์ฉํด์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋์นญํค ๋ฐฉ์์ผ๋ก ์ํธํ ํ ํ์ ์ฃผ๊ณ ๋ฐ๋๋ค.
ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ handshake ๋จ๊ณ์ ์ข ๋ฃ๋ฅผ ์๋ก์๊ฒ ์๋ฆฐ๋ค.
2. ์ธ์
์ธ์
์ ์ค์ ๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋จ๊ณ์ด๋ค.
์ด ๋จ๊ณ์์ ์ ๋ณด๋ฅผ ์๋๋ฐฉ์๊ฒ ์ ์กํ๊ธฐ ์ ์ session key๋ฅผ ์ด์ฉํด์ ๋์นญํค ๋ฐฉ์์ผ๋ก ์ํธํ ํ๊ณ , ์ํธํ ๋ ์ ๋ณด๋ ์๋๋ฐฉ์๊ฒ ์ ์ก ๋๊ณ , ์๋๋ฐฉ๋ session key๋ฅผ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ณตํธํ ํ ์ ์๋ค.
3. ์ธ์ ์ข ๋ฃ
๋ฐ์ดํฐ์ ์ ์ก์ด ๋๋๋ฉด SSL ํต์ ์ด ๋๋ฌ์์ ์๋ก์๊ฒ ์๋ ค์ค๋ค. ์ด ๋ ํต์ ์์ ์ฌ์ฉํ session key๋ฅผ ํ๊ธฐํ๋ค.
CA(์ธ์ฆ๊ธฐ๊ด)
์ธ์ฆ์์ ์ญํ ์ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ์๋ํ ์๋ฒ๊ฐ ๋ง๋์ง๋ฅผ ๋ณด์ฅํ๋ ์ญํ ์ ํ๋ค. ์ด ์ญํ ์ ํ๋ ๋ฏผ๊ฐ๊ธฐ์ ๋ค์ด ์๋๋ฐ ์ด๋ฐ ๊ธฐ์ ๋ค์ CA(Certificate authority)ํน์ Root Certificate๋ผ๊ณ ๋ถ๋ฅธ๋ค. CA๋ ์๋ฌด ๊ธฐ์ ์ด๋ ํ ์ ์๊ณ ์ ๋ขฐ์ฑ์ด ์๊ฒฉํ๊ฒ ๊ณต์ธ๋ ๊ธฐ์ ๋ค๋ง์ด ์ฐธ์ฌํ ์ ์๋ค.
SSL ์ธ์ฆ์์ ๊ธฐ๋ฅ
- ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ์๋ฒ๊ฐ ์ ๋ขฐ ํ ์ ์๋ ์๋ฒ์์ ๋ณด์ฅํ๋ค.
- SSL ํต์ ์ ์ฌ์ฉํ ๊ณต๊ฐํค๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ๋ค.
SSL์ ๋ด์ฉ
- ์๋น์ค์ ์ ๋ณด(์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ CA, ์๋น์ค์ ๋๋ฉ์ธ ๋ฑ)
- ์๋ฒ ์ธก ๊ณต๊ฐํค (๊ณต๊ฐํค์ ๋ด์ฉ, ๊ณต๊ฐํค์ ์ํธํ ๋ฐฉ๋ฒ)
1๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ์๋ํ ์๋ฒ๊ฐ ๋ง๋์ง์ ๋ํ ๋ด์ฉ์ ๊ฐ์ง๊ณ . 2๋ฒ์ ์๋ฒ์ ํต์ ์ ํ ๋ ์ฌ์ฉํ ๊ณต๊ฐํค์ ๊ทธ ๊ณต๊ฐํค์ ์ํธํ ๋ฐฉ๋ฒ๋ค์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
ํฌ๋กฌ์์ ์ธ์ฆ์๋ฅผ ํ์ธํด๋ณด๋ ๋ฐฉ๋ฒ
- ์๋ฌผ์ ์์ด์ฝ์ ํด๋ฆญํด์ ์ธ์ฆ์ ํญ์ ๋ค์ด๊ฐ๋ค
- ๋ฐ๊ธ ๋์๊ณผ ๋ฐ๊ธ์๋ฅผ ํ์ธํ ์ ์๋ค.
- ์ธ์ฆ๊ฒฝ๋ก ํญ์ ๋ค์ด๊ฐ์ ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํด์ค ๊ธฐ๊ด์ ํ์ธํ ์ ์๋ค. GlobalSign์์ ๋ฐ๊ธํด์ค ์ธ์ฆ์์์ ์์ ์๋ค.
CA๋ฅผ ๋ธ๋ผ์ฐ์ ๋ ์๊ณ ์๋ค.
๋ธ๋ผ์ฐ์ ๋ ๋ด๋ถ์ ์ผ๋ก CA์ ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ด ๋ง์ ๋ธ๋ผ์ฐ์ ์ ์์ค์ฝ๋ ์์ CA ๋ฆฌ์คํธ๊ฐ ๋ค์ด์๋ค๋ ๊ฒ์ด๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฏธ๋ฆฌ ํ์ ํ๊ณ ์๋ CA์ ๋ฆฌ์คํธ์ ํฌํจ๋์ด์ผ๋ง ๊ณต์ธ๋ CA๊ฐ ๋ ์ ์๋ค. CA์ ๋ฆฌ์คํธ์ CA์ ๊ณต๊ฐํค๋ฅผ ๋ธ๋ผ์ฐ์ ๋ ์ด๋ฏธ ์๊ณ ์๋ค.
์ฐธ๊ณ ์ฌ์ดํธ
์ํ์ฝ๋ฉ HTTPS : https://opentutorials.org/course/228/4894
'Back-end' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Slack์ผ๋ก OAuth ์ฌ์ฉํ๊ธฐ (0) | 2022.10.31 |
---|---|
[HTTP] ์๋ต ์ํ ์ฝ๋ ์ ๋ฆฌ (0) | 2021.09.14 |
[REST API]REST API๋? (0) | 2021.08.29 |
[WEB] HTTP ์ ๋ฆฌ (0) | 2021.08.29 |
Android Studio + Node.js + MySQL ํ๋ก์ ํธ ํ์ผ ๊ตฌ์กฐ (0) | 2021.08.22 |