๐ Http (Hypertext Transfer Protocol) ?
- ์๋ก ๋ค๋ฅธ ์์คํ ๊ฐ ํต์ ์ ์ฃผ๊ณ ๋ฐ๊ฒ ํ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํ๋กํ ์ฝ ๋ก ์ด๊ธฐ์๋ HTML์ ์ฃผ๋ก ์ ์กํ์ผ๋ ์ต๊ทผ์๋ JSON, XML ๋ฑ ๋ค์ํ ํํ์ ์ ๋ณด ์ ์ก๋ ํ๊ฒ ๋์๋ค.
- ํด๋ผ์ด์ธํธ ↔ ์๋ฒ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ Request์ Response๋ก ์ด๋ฃจ์ด์ง.
- Request๋ ์๋์ฒ๋ผ ์์ฒญ Method(GET,POST…), Path, ํ๋กํ ์ฝ ๋ฒ์ ๊ทธ๋ฆฌ๊ณ ํค๋, Payload(Optional) ๋ก ์ด๋ฃจ์ด์ง.
- Response ๊ตฌ์กฐ๋ ํ๋กํ ์ฝ ๋ฒ์ , Status Code, Status message ๊ทธ๋ฆฌ๊ณ Header , Payload(Optional) ์ ๋ณด๋ก ์ด๋ฃจ์ด์ง
๐ Https (Hypertext Transfer Protocol Secure)
- Https๋ Http์ Secure ๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์. ์ฆ, ์ ์ก๋ ๋ฐ์ดํฐ์ ์์ ํ ์ ์ก์ ์ํ ํ๋กํ ์ฝ์ด๋ค.
- ์๋ ๊ทธ๋ฆผ ์์๋ฅผ ๋ณด๋ฉด, ํจํท ๋ฐ์ดํฐ ์ ์ก ์ ํด์ปค์ ์ค๋ํ ๊ณต๊ฒฉ์ HTTP๋ ๊ทธ๋๋ก Plain Text๊ฐ ๋ ธ์ถ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ๋ฐ๋ฉด Https์์๋ Cyphered Text๊ฐ ์ ์ก๋๊ธฐ์ ๋ณด๋ค ์์ ํ๋ค๊ณ ํ ์ ์๋ค.
- ์๋ฒ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐ๊ณ Bcrypt ๋ฑ์ผ๋ก ์ํธํํ๋ ๋ฑ์ ๊ณผ์ ์ ๊ฑฐ์น์ง๋ง Client ↔ Server๊ฐ ํต์ ์์ ๋น๋ฐ๋ฒํธ๊ฐ ๋ ธ์ถ๋๋ค๋ฉด ๋ง์งฑ ๋๋ฃจ๋ฌต์ด๋ฏ๋ก 2014๋ ๋ถํฐ ๊ตฌ๊ธ์์๋ Http๋ฅผ Https๋ก ๋ฐ๊พธ๋ผ๊ณ ๊ถ๊ณ . ๊ทธ ์ด์ ๊น์ง๋ ์ ์์๊ฑฐ๋ ๋ฑ ์ฃผ์ ํ์ด์ง๋ง Https๋ฅผ ์ ์ฉํ์.
๐ SSL (Secure Socket Layer) & TLS (Transport Layer Security) ์ด๋ ?
- SSL์ ์น ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ํต์ ์ํธํ ํ๋กํ ์ฝ๋ก 1994๋ Netscape์ฌ ๊ฐ๋ฐ
- TLS๋ SSL 3.0์ ๋ณด์ ์ทจ์ฝ์ ์ ๋ณด์ํ ํต์ ๋ณด์ ํ๋กํ ์ฝ๋ก ๊ตญ์ ์ธํฐ๋ทํ์คํ๊ธฐ๊ตฌ(IETF)์์ ๊ณ์นํ์ฌ ๊ฐ๋ฐ ์งํ ์ค์ด๋ ํต์ SSL์ด๋ผ ๋ถ๋ฆ.
- SSL ๊ธฐ๋ณธ ํฌํธ๋ 443์.
- ๊ทธ๋์ ์ ์?
- ํจํท์ ๋ํ์ฌ ๊ณต๊ฒฉ์๋ก๋ถํฐ ์ค๋ํ ๋ฐฉ์ง (ํจํท ๊ฐ์ฒญ)
- ํจํท์ ๋ํ์ฌ ๊ณต๊ฒฉ์๋ก๋ถํฐ ์คํธํ ๋ฐฉ์ง (ํจํท ํ์ทจ)
- ๋์๋ฐฉ์
- ๋ธ๋ผ์ฐ์ ์ ์ํ๋ฉด Client & Server๊ฐ Hello ๊ณผ์ ์ ๊ฑฐ์น๋ค.
- Client : ์ํธํ ํ๋กํ ์ฝ ์ ๋ณด์, ์ํธํ ๊ธฐ๋ฒ, ์ธ์ ์์ด๋ ๋ฑ ์ฃผ์ ์ ๋ณด๋ฅผ ์ ๋ฌ
- Server : ์ํธํ ๊ธฐ๋ฒ, ์ธ์ฆ์(CA, Domain, ๊ณต๊ฐํค)๋ฅผ ํฌํจํ์ฌ ์ ๋ฌ
- ์น๋ธ๋ผ์ฐ์ = ์ ๋ฌ๋ฐ์ ์ธ์ฆ์๋ฅผ ๊ณต๊ฐํค๋ก ๋ณตํธํ & ๋ฐ์ดํฐ ์ํธํ์ ์ฌ์ฉํ ๋์นญํค ์์ฑ
- ์์ฑํ ๋์นญํค๋ฅผ ์น์๋ฒ์์ ์ ๋ฌ๋ฐ์ ๊ณต๊ฐํค๋ก ์ํธํ ํ → ์๋ฒ์ ์ ๋ฌ
- ์๋ฒ๋ ์ ๋ฌ๋ฐ์ ์ํธํ๋ ๋์นญํค๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋น๋ฐํค๋ฅผ ํตํด ๋ณตํธํํ์ฌ ๋์นญํค๋ฅผ ์ป์
- ์ด์ ๋์นญํค๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ํธํํด์ Client - Server๊ฐ ์ ๋ฌํ๊ณ ๋ณตํธํ ์ ์ฉ.
- ๋ธ๋ผ์ฐ์ ์ ์ํ๋ฉด Client & Server๊ฐ Hello ๊ณผ์ ์ ๊ฑฐ์น๋ค.
๐ SSL ์ธ์ฆ์ ๋ฐ๊ธ๋ฐ๊ธฐ
- SSL์ ์ ์ฉํ๊ธฐ ์ํด์๋ ํต์ ์ ๋ฌธ ๋ณด์ ์ธ์ฆ์ ๋ฐ๊ธ ์ ์ฒด(CA)์์ ๋ฐ๊ธํ SSL์ธ์ฆ์๊ฐ ํ์ํ๋ค.
- ์ธ์ฆ์๋ ํต์ ์๋ 3๊ฐ์ง ์ข
๋ฅ๋ฅผ ๋ณดํธ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
- ๋จ์ผ์ธ์ฆ์ (Single Domain SSL) : www์ ํฌํจํ ํ๋์ ๋๋ฉ์ธ๋ง ์ ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ์์ผ๋์นด๋์ธ์ฆ์ (Wildcard SSL) : ํ๋์ ์ธ์ฆ์๋ก ๋ชจ๋ ์๋ธ๋๋ฉ์ธ์ ๋ฌด์ ํ ์ ์ฉ๊ฐ๋ฅํ๋ค.
- example.com & server.example.com & <ANY>.example.com
- ๋ฉํฐ๋๋ฉ์ธ์ธ์ฆ์ (Multi-Domail SSL) : ํ๋์ ์ธ์ฆ์๋ก ์ ํ ๋ค๋ฅธ ๋๋ฉ์ธ์ ์ ์ฉ์ด ๊ฐ๋ฅ.
๐ ๋ฌด๋ฃ SSL ์ธ์ฆ์ ๋ฐ๊ธ ์ฌ์ดํธ
- ์ฒ์ ๋๋ฉ์ธ์ ์ธ์ฆ๋ฐ๊ณ (*์ ํจ๊ธฐ๊ฐ์ด ์์ 3๊ฐ์) ๋ง๋ฃ๋๋ฉด Certbot ์ ํ์ฉํด ์๋ ์ฐ์ฅ์ด ๊ฐ๋ฅํ๋๋ก ๊ตฌ์ฑํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์
- https://letsencrypt.org/
- https://zerossl.com/
- https://www.sslforfree.com/
๐ Reference
'Web Development > Back-end' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP VS Socket (0) | 2023.05.01 |
---|---|
Nestjs ํ๋์ ๊ธฐ๋ณธ ์ ๋ฆฌ (0) | 2023.05.01 |
์ธ์ฆ ์ธ๊ฐ ๋ฐฉ์ ๋น๊ต (0) | 2023.05.01 |
Nestjs & Docker & Github Action ํ์ฉ ์๋ ๋ฐฐํฌ ๊ตฌ์ถํ๊ธฐ (2) | 2023.05.01 |
[CICD] Github Action (CI) + CodeDeploy (CD) (0) | 2022.10.10 |