python genvet module์ ์ดํด๋ณด๋ค๊ฐ SSL์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์ ํ์๋ ๊ฒ์ ๋ณด์๋ค.
๋์ฒด SSL์ด ๋ฌด์์ผ๊น ์ถ์ด์ ๊ณต๋ถ๋ฅผ ์์ํ๋ค.
์ผ๋จ SSL์ ๋ํด ์์๋ณด๊ธฐ์ ์ HTTP์ HTTPS์ ์ฐจ์ด์ ์ ๋ณด์๋ฉด,
HTTP๋ Hypertext Transfer Protocol๋ก ํต์ ๊ท์ฝ์ค์ ํ๋๋ค.
HTTPS๋ HTTP์์ S๊ฐ ์ถ๊ฐ๋ ํํ๋ก ๋ณด์์ด ๊ฐํ ๋ HTTP์ธ๋ฐ, S๋ Over Secure Socket Layer์ ์ฝ์์ด๋ค.
๊ฐ๋ HTTPS์ SSL์ ๊ฐ์ ๊ฒ ์ฒ๋ผ ์๊ธฐํ๋ ์ฌ๋๋ค์ด ์๋๋ฐ, ์๋ฐํ ๋งํด์ ๋ค๋ฅธ ๊ฒ์ด๋ค.
์์ ์ฌ์ง์์ ์ฒ๋ผ, SSL์ด ์ ์ฉ๋ ์์๋ Application Layer๋ค์ HTTP, FTP, Telnet ๋ฑ๋ฑ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๊ณ ๊ทธ ์ค์์ HTTP์ ์ ์ฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด HTTPS๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌํ์ฌ SSL์ด๋?
โท TLS = SSL
๋ค์ค์ผ์ดํ์ ์ํด์ ๋ฐ๋ช ๋์๊ณ ์ฌ์ฉํ๋ ์ด๊ฐ ๋ง์์ง๋ค๊ฐ ํ์คํ ๊ธฐ๊ตฌ์ธ IETF์ ๊ด๋ฆฌํ์ TLS๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ฒ ๋์๋ค.
์ ์๋ช ์นญ์ TLS์ด์ง๋ง, ์ญ์ฌ์ ์ด์ ๋ก ๋ง์ด ์ฐ์ด๋ ๋ช ์นญ์ด SSL์ธ ์์ด๋ค.
โท SSL
SSL ๋์งํธ ์ธ์ฆ์๋ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํต์ ์ ์ 3์๊ฐ ๋ณด์ฆํด์ฃผ๋ ์ ์ํ๋ ๋ฌธ์์ด๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ํ ์งํ ์๋ฒ๋ ํด๋ผ์ด์ธํธ์๊ฒ SSL ์ธ์ฆ์ ์ ๋ณด๋ฅผ ์ ๋ฌํ๊ณ , ํด๋ผ์ด์ธํธ๋ ์ด ์ธ์ฆ์ ์ ๋ณด๊ฐ ์ ๋ขฐํ ์ ์๋ ๊ฒ์ธ์ง๋ฅผ ๊ฒ์ฆ ํ ํ์ ์ ์ฐจ๋ฅผ ์ํํ๊ฒ ๋๋ค.
โท ๋ฐ์ ์ด๋ค์ ์ํ ์งค๋งํ ์์ฝ
- ๋ณดํต 443๋ฒ ํฌํธ๋ฅผ ์ฌ์ฉํ๋ฉฐ, https://๋ฅผ ์ด์ฉํ๋ค.
- Web Server์ Web Browser ๊ฐ์ ๋ณด์์ ์ํด ๋ง๋ค์ด ์ก์ผ๋ฉฐ, ๊ณต๊ฐํค/๊ฐ์ธํค ๋์นญํค ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉํ๋ค.
- ์ ์กํ ๊ฒ๋ค์ ๋์นญํค๋ฅผ ์ด์ฉํ์ฌ ์ํธํํ๊ณ , ๋์นญํค๋ง์ ๊ณต๊ฐํค/๊ฐ์ธํค๋ก ์ํธํํ์ฌ ์ ์กํ๋ค.
- SSL ํต์ ์ ํ๋ ์ฌ์ดํธ์ SSL๋ณด์๋ฑ๊ธ์ ๋ถ์ํด์ฃผ๋ ์ฌ์ดํธ๊ฐ ์๋ค.
https://www.ssllabs.com/ssltest/analyze.html?d=SSL ์ฌ์ฉํ๋ url
- ๊ฐ ์ธ์ฆ์์๋ ๋ง๋ฃ๊ธฐ๊ฐ์ด ์์ผ๋ฉฐ, ๋ง๋ฃ๋๊ธฐ ์ ์ ๊ฐฑ์ ์ ํด์ผํ๋ค.
- TCP protocol ๊ธฐ๋ฐ์์ผ๋ก, handshake ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- ๋์นญํค ์ํธํ๋ ์คํธ๋ฆผ/๋ธ๋ก์ผ๋ก ํ์์ด ๋๋๋๋ฐ ์คํธ๋ฆผ์ bit๋ byte ๋จ์๋ก ์ํธํ ํ๋ ๊ฒ์ด๊ณ ๋ธ๋ก์ ์ง์ ๋ ๋ธ๋ก๋จ์๋ก ์ํธํ ํ๋ ๊ฒ ์ด๋ค.
- ์ฃผ์์ ๋ณด๊ฐ ๋ ธ์ถ๋๋ ํน์ ํ์ด์ง๋ HTTPS๋ฅผ ์ฌ์ฉํ๊ณ , ๋จ์ํ ์น ์ํ์๋ HTTP๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
SSL๋ฅผ ์ข ๋ ์์๋ณด๊ธฐ ์ ์ ๊ฐ๋จํ ์ดํด๋ณผ, ๋์นญํค? ๊ณต๊ฐํค? ์ธ์ฆ?
โท ์ธ์ฆ
์์ ์ด ๋ฐ์ ์ ๋ณด๊ฐ, ์์ ์ด ์์ํ๋ ๊ณณ์์ ์ ์กํ ์ฌ๋ฐ๋ฅธ ์ ๋ณด๊ฐ ๋ง๋์ง ํ์ธํ๋ ๊ฒ.
โท ๋น๋์นญํค = ๊ณต๊ฐํค
๋ชจ๋์๊ฒ ์๋ ค์ ธ์๋ ๊ณต๊ฐํค๋ก ์ ์กํ ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ ์กํ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ์ชฝ์์ ๋น๊ณต๊ฐํค๋ก ์ด๋ฅผ ๋ณตํธํ ํ๋ค.
ํด๋ผ์ด์ธํธ, ์๋ฒ ๋ชจ๋ ๊ฐ์์ ๊ณต๊ฐํค/๋น๋ฐํค๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ก ํ ๋๋ ์๋์๊ฒ ๊ณต๊ฐํค๋ฅผ ์์ฒญํ์ฌ ์ํธํํ์ฌ ์ ์กํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ณตํธํํ ๋๋ ์์ ์ ๋น๋ฐํค๋ฅผ ์ฌ์ฉํ๋ค.
์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ด ์๋ค.
โท ๋์นญํค
๊ณต์ ํ ๋์นญํค๋ก ๋ฐ์ดํฐ๋ฅผ ์ํธํํ์ฌ ์ ์กํ๋ฉด, ๋ฐ์ดํฐ๋ฅผ ์์ ํ๋ ์ชฝ์์ ๊ณต์ ํ ๋์นญํค๋ก ์ด๋ฅผ ๋ณตํธํ ํ๋ค.
์ต์ด ํต์ ์ ์ํธํ, ๋ณตํธํ์ ์ฌ์ฉํ ํค๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ฏ๋ก ํต์ ์๋๊ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ์ฒ์ ํค๋ฅผ ๊ณต์ ํ ๋๋ ํด๋น ํค๋ฅผ ์ํธํ ํ์ง ์๊ณ ํ๋ฌธ์ผ๋ก ํค๋ฅผ ์ ์กํ๊ธฐ ๋๋ฌธ์ ๋ณด์์ ์ทจ์ฝ์ ์ด ์๊ธฐ๋๋ฐ ์ด๋ฅผ ํค๋ถ๋ฐฐ์ ๋ฌธ์ ๋ผ๊ณ ํ๋ค.
๊ณต๊ฐํค ๋ฐฉ์์ ์/๋ณตํธํ ๊ณผ์ ์์ ์ปดํจํ ํ์๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, ์ฑ๋ฅ์์ ๋ง์ ๋จ์ ์ด ์๊ธด๋ค.
๋ฐ๋ผ์, SSL์ ๊ณต๊ฐํค์ ๋์นญํค๋ฅผ ํผํฉํด์ ์ฌ์ฉํ๋ค.
1. ๋์นญํค๋ฅผ ๊ณต์ ํ ๋ ์ฌ์ฉํ๋ ์ํธํ ๊ธฐ๋ฒ = ๊ณต๊ฐํค๋ฐฉ์
2. ์ค ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ๋ ์ฌ์ฉํ๋ ์ํธํ ๊ธฐ๋ฒ = ๋์นญํค ๋ฐฉ์
= ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ฃผ๊ณ ๋ฐ๋ ์ค์ ์ ๋ณด๋ ๋์นญํค ๋ฐฉ์์ ์ฌ์ฉํ๊ณ , ๋์นญํค๋ฅผ ๊ณต์ ํ ๋๋ ๊ณต๊ฐํค ๋ฐฉ์์ ์ด์ฉํ์ฌ ๋์นญํค๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
SSL ์ธ์ฆ์
1. ์ญํ
- ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ์๋ฒ๊ฐ ์ ๋ขฐ ํ ์ ์๋ ์๋ฒ์์ ๋ณด์ฅํ๋ค.
- SSL ํต์ ์ ์ฌ์ฉํ ๊ณต๊ฐํค๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ์ ๊ณตํ๋ค.
2. SSL์ ๋ด์ฉ
- ์๋น์ค์ ์ ๋ณด: ์ธ์ฆ์๋ฅผ ๋ฐ๊ธํ CA ์๋น์ค์ ๋๋ฉ์ธ, ํด๋ผ์ด์ธํธ๊ฐ ์ ์ํ ์๋ฒ์ ์ ๋ณด ๋ฑ๋ฑ
- ์๋ฒ ์ธก ๊ณต๊ฐํค: ์๋ฒ์ ํต์ ์ ํ ๋ ์ฌ์ฉํ ๊ณต๊ฐํค์ ๊ทธ ๊ณต๊ฐํค์ ์ํธํ ๋ฐฉ๋ฒ ๋ฑ๋ฑ
3. ๊ทธ์ธ etc..
- CA ( Certificate Authority ) = Root Certificate: ์ธ์ฆ์ ์ญํ ์ ํ๋ ๋ฏผ๊ฐ ๊ธฐ์
- SSL์ ์ ์ฉํ๊ณ ๋ ์์ง๋ง, ๊ณต์ธ๋ ๊ฒ์ด ์๋๋ผ๋ ๊ฒ์ ์๋ ค์ฃผ๋ ํ์
- ๋ธ๋ผ์ฐ์ ๋ ๋ด๋ถ์ ์ผ๋ก CA list๋ฅผ ์๊ณ ์๋ค.
SSL ๋์ ์์
SSL์ 3๊ฐ์ง ๋์์ ํ๋ค. "์ ์ -> ์ ์ก -> ์ธ์ ์ข ๋ฃ"
1. Handshake( ์ ์ )
- SSL ์ธ์ฆ์๋ฅผ ์ฃผ๊ณ ๋ฐ๋๋ค.
- ๊ณต๊ฐํค ๋ฐฉ์์ผ๋ก ๋์นญํค ๊ฐ์ ์ํธํ ํด์ ์ ์กํ๋ค.
a. ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ํ๋ค. ์ด ๋จ๊ณ๋ฅผ Client hello๋ผ๊ณ ํ๋ค.
i. ํด๋ผ์ด์ธํธ ์ธก์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ: ๋์นญํค ๊ฐ์ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ค.
ii. ํด๋ผ์ด์ธํธ๊ฐ ์ง์ํ๋ ์ํธํ ๋ฐฉ์๋ค: ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ ์ง์ํ๋ ์ํธํ ๋ฐฉ์์ด ์๋ก ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์,
์ํธ๊ฐ์ ์ด๋ค ์ํธํ ๋ฐฉ์์ ์ฌ์ฉํ ๊ฒ์ธ์ง์ ๋ํ ํ์์ ํ๋ค.
์ด ํ์์ ์ํด์ ํด๋ผ์ด์ธํธ ์ธก์์ ์์ ์ด ์ฌ์ฉํ ์ ์๋ ์ํธํ ๋ฐฉ์๋ค์ ์ ์กํ๋ค.
iii. ์ธ์ ์์ด๋: ์ด๋ฏธ SSL ํธ๋์์ดํน์ ํ๋ค๋ง๋ฉด ๋น์ฉ๊ณผ ์๊ฐ์ ์ ์ฝํ๊ธฐ ์ํด์ ๊ธฐ์กด์ ์ธ์ ์ ์ฌํ์ฉ ํ๊ฒ ๋๋๋ฐ,
์ด ๋ ์ฌ์ฉํ ์ฐ๊ฒฐ์ ๋ํ ์๋ณ์๋ฅผ ์๋ฒ์ธก์ผ๋ก ์ ์กํ๋ค.
b. ์๋ฒ๋ Client hello์ ๋ํ ์๋ต์ผ๋ก Server hello๋ฅผ ํ๊ฒ ๋๋ค.
i. ์๋ฒ ์ธก์์ ์์ฑํ ๋๋ค ๋ฐ์ดํฐ: ๋์นญํค ๊ฐ์ ์์ฑํ๋๋ฐ ์ฌ์ฉ๋๋ค.
ii. ์๋ฒ๊ฐ ์ ํํ ํด๋ผ์ด์ธํธ์ ์ํธํ ๋ฐฉ์: ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ฌํ ์ํธํ ๋ฐฉ์ ์ค์์ ์๋ฒ ์ชฝ์์๋ ์ฌ์ฉํ ์ ์๋
์ํธํ ๋ฐฉ์์ ์ ํํด์ ํด๋ผ์ด์ธํธ๋ก ์ ๋ฌํ๋ค.
iii. SSL ์ธ์ฆ์
c. ๋์นญํค ๊ฐ(= session key )์ ์ด๋ป๊ฒ ๋ง๋ค์ด ์ง๋๊ฐ?
ํด๋ผ์ด์ธํธ๋ ์ ๋ฌ๋ฐ์ ์๋ฒ์ ๋๋ค ๋ฐ์ดํฐ์ ๋ณธ์ธ์ด ์์ฑํ ๋๋ค ๋ฐ์ดํฐ๋ฅผ ์กฐํฉํด์ pre master secret๋ฅผ ์์ฑํ๋ค.
์์ฑํ pre master secret๋ ๊ณต๊ฐํค ๋ฐฉ์์ผ๋ก ์ํธํ ํด์ ์๋ฒ๋ก ์ ์กํ๋ค.
์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ๋ชจ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๊ฑฐ์ณ pre master secret ๊ฐ์ master secret ๊ฐ์ผ๋ก ๋ง๋ ๋ค.
Master secret๋ session key๋ฅผ ์์ฑํ๋๋ฐ, ์ด session key ๊ฐ์ ์ด์ฉํด ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋์นญํค ๋ฐฉ์์ผ๋ก ์ํธํ ํ๋ค.
2. Session( ์ธ์ )
- ์ค์ ๋ก ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋จ๊ณ
- ์ ๋ณด๋ฅผ ์๋๋ฐฉ์๊ฒ ์ ์กํ๊ธฐ ์ ์ session key ๊ฐ์ ์ด์ฉํด์ ๋์นญํค ๋ฐฉ์์ผ๋ก ์ํธํ ํ๋ค.
3. Session end( ์ธ์ ์ข ๋ฃ )
- ๋ฐ์ดํฐ์ ์ ์ก์ด ๋๋๋ฉด SSL ํต์ ์ด ๋๋ฌ์์ ์๋ก์๊ฒ ์๋ ค์ค๋ค.
- ํต์ ์ ์ฌ์ฉํ ๋์นญํค์ธ ์ธ์ ํค๋ฅผ ํ๊ธฐํ๋ค.
โท ๋ค์ ํ๋ฒ ์ง๊ณ ๊ฐ๊ธฐ!
๊ทธ๋ฅ ๊ณต๊ฐํค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ๊ฒ์ ๋์นญํค์ ๊ณต๊ฐํค๋ฅผ ์กฐํฉํด์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ฌด์์๊น? ๊ทธ๊ฒ์ ๊ณต๊ฐํค ๋ฐฉ์์ด ๋ง์ ์ปดํจํฐ ํ์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ง์ฝ ๊ณต๊ฐํค๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด ๋ง์ ์ ์์ด ๋ชฐ๋ฆฌ๋ ์๋ฒ๋ ๋งค์ฐ ํฐ ๋น์ฉ์ ์ง๋ถํด์ผ ํ ๊ฒ์ด๋ค.
๋ฐ๋๋ก ๋์นญํค๋ ์ํธ๋ฅผ ํธ๋ ์ด์ ์ธ ๋์นญํค๋ฅผ ์๋์๊ฒ ์ ์กํด์ผ ํ๋๋ฐ, ์ํธํ๊ฐ ๋์ง ์์ ์ธํฐ๋ท์ ํตํด์ ํค๋ฅผ ์ ์กํ๋ ๊ฒ์ ์ํํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ ์๋๋ ๋๋ฆฌ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ ๊ณต๊ฐํค ๋ฐฉ์์ผ๋ก ๋์นญํค๋ฅผ ์ํธํํ๊ณ ,
์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋๋ ๋์นญํค๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฒ์ด๋ค.
SSL ์ฌ์ฉ
์ธ์ฆ์ ๊ตฌ์ ๋ฐ ์น์๋ฒ ์ ํ ์ ๋ํ ๋ด์ฉ์ ์๋ ์ฐธ์กฐ๋ด์ฉ์ ์ํ์ฝ๋ฉ ๊ฐ์๋ฅผ ์ฐธ์กฐํ์.
Thanks for ๐
'๐ Note' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTML ? JSP ? MUSTACHE ? (0) | 2021.06.04 |
---|---|
Monkey Patch (๋ฉํค ํจ์น) (0) | 2020.03.09 |
Pycharm * ์ฌ์ฉ์ ๋ฐ์ค, ๋ฌผ๊ฒฐ ํ์ (0) | 2020.03.09 |
Codecov? ๋ญ๋ ๋.. ์ฝ๋.. ์ปค๋ฒ๋ฆฌ์ง...๋ ๋...OTL (0) | 2020.03.09 |
์ฝ๋ฃจํด vs ์ค๋ ๋ (2) | 2020.03.09 |