HTTPS (HyperText Transfer Protocol Secure)
๊ฐ์
HTTPS๋ HTTP์ SSL/TLS ์ํธํ๋ฅผ ์ ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ์ฃผ๊ณ ๋ฐ๋ ํ๋กํ ์ฝ์ด๋ค. (ํฌํธ 443)
ํ์ ์ฐ๋ฆฌ๊ฐ ์น์ฌ์ดํธ๋ฅผ ์ด์ฉํ ๋, ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์
์๋ฌผ์ ์์ด์ฝ์ด ๋ณด์ด๋ ๊ฒ, ๋ณด์ ์ ์์ฃ ? ๊ทธ๊ฒ ๋ฐ๋ก HTTPS๊ฐ ์ ์ฉ๋ ์ฌ์ดํธ๋ผ๋ ํ์์์.
HTTP๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ฌธ(Plain Text)์ผ๋ก ์ ์กํด์. ๋น์ ํ๋ฉด, ์ฝ์์ ๋ด์ฉ์ ๊ทธ๋๋ก ์ ์ด์ ๋ณด๋ด๋ ๊ฑฐ์์ โ ์ฐ์ฒด๋ถ๋ ์ค๊ฐ์ ๋๊ตฌ๋ ๋ด์ฉ์ ๋ณผ ์ ์์ด์. ๋ฐ๋ฉด HTTPS๋ ํธ์ง ๋ดํฌ์ ๋ฃ๊ณ ์ ๊ธ์ฅ์น๊น์ง ์ฑ์์ ๋ณด๋ด๋ ๊ฑฐ์์. ์ค๊ฐ์ ๋๊ฐ ๊ฐ๋ก์ฑ๋ ๋ด์ฉ์ ๋ณผ ์ ์์ฃ !
HTTP vs HTTPS ๋น๊ต
ํญ๋ชฉ | HTTP | HTTPS |
์ ์๋ช
| HyperText Transfer Protocol | HyperText Transfer Protocol Secure |
ํฌํธ | 80 | 443 |
์ํธํ | ||
์ธ์ฆ์ | ๋ถํ์ | SSL/TLS ์ธ์ฆ์ ํ์ |
๋ฐ์ดํฐ ๋ณดํธ | ๋์ฒญ, ๋ณ์กฐ ๊ฐ๋ฅ | ๋์ฒญ, ๋ณ์กฐ ๋ถ๊ฐ |
SEO | ๋ถ๋ฆฌ | |
๋ธ๋ผ์ฐ์ ํ์ | ||
์๋ | ์ฝ๊ฐ ๋น ๋ฆ | ์ฝ๊ฐ ๋๋ฆผ (์ํธํ ์ค๋ฒํค๋) |
๋น์ | ์ฝ์ | ๋ฐ๋ด ํธ์ง |
์์ฆ์ HTTPS๊ฐ ์ฌ์ค์ ํ์์์. Google Chrome์ HTTP ์ฌ์ดํธ์ ์ ์ํ๋ฉด "์ฃผ์ ์ํจ"์ด๋ผ๊ณ ๊ฒฝ๊ณ ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ , Google ๊ฒ์ ๊ฒฐ๊ณผ์์๋ HTTPS ์ฌ์ดํธ๊ฐ ๋ ๋์ ์์๋ฅผ ๋ฐ์์. ๋ํ HTTP/2, HTTP/3 ๊ฐ์ ์ต์ ํ๋กํ ์ฝ๋ HTTPS ์์์๋ง ๋์ํด์.
HTTPS ํต์ ๊ณผ์ (TLS Handshake)
sequenceDiagram
participant ๋ธ๋ผ์ฐ์ as ๐ค ๋ธ๋ผ์ฐ์
participant ์๋ฒ as ๐ฅ๏ธ Nginx ์๋ฒ
Note over ๋ธ๋ผ์ฐ์ ,์๋ฒ: ๐ค TLS Handshake ์์
๋ธ๋ผ์ฐ์ ->>์๋ฒ: โ Client Hello<br/>(์ง์ํ๋ ์ํธํ ๋ฐฉ์ ๋ชฉ๋ก)
์๋ฒ-->>๋ธ๋ผ์ฐ์ : โก Server Hello<br/>(์ ํํ ์ํธํ ๋ฐฉ์ + ์ธ์ฆ์)
Note over ๋ธ๋ผ์ฐ์ : โข ์ธ์ฆ์ ๊ฒ์ฆ<br/>(CA์๊ฒ ์ง์ง์ธ์ง ํ์ธ)
๋ธ๋ผ์ฐ์ ->>์๋ฒ: โฃ ๋์นญํค ๊ตํ<br/>(๊ณต๊ฐํค๋ก ์ํธํํ์ฌ ์ ์ก)
์๋ฒ-->>๋ธ๋ผ์ฐ์ : โค Handshake ์๋ฃ
Note over ๋ธ๋ผ์ฐ์ ,์๋ฒ: ๐ ์ํธํ ํต์ ์์!
๋ธ๋ผ์ฐ์ ->>์๋ฒ: ์ํธํ๋ HTTP ์์ฒญ
์๋ฒ-->>๋ธ๋ผ์ฐ์ : ์ํธํ๋ HTTP ์๋ตMermaid
๋ณต์ฌ
์ด ๊ณผ์ ์ ์ข ๋ ์ฝ๊ฒ ํ์ด๋ณผ๊ฒ์:
1.
Client Hello โ ๋ธ๋ผ์ฐ์ ๊ฐ "์๋
! ๋๋ ์ด๋ฐ ์ํธํ ๋ฐฉ์๋ค์ ์ฌ์ฉํ ์ ์์ด!" ํ๊ณ ์๋ฒ์๊ฒ ๋งํด์.
2.
Server Hello โ ์๋ฒ๊ฐ "์ข์, ์ด ๋ฐฉ์์ผ๋ก ํ์! ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ ๋ด ์ ๋ถ์ฆ(์ธ์ฆ์)์ด์ผ!" ํ๊ณ ์๋ตํด์.
3.
์ธ์ฆ์ ๊ฒ์ฆ โ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ฒ์ ์ธ์ฆ์๊ฐ ์ง์ง์ธ์ง CA(์ธ์ฆ๊ธฐ๊ด)๋ฅผ ํตํด ํ์ธํด์.
4.
๋์นญํค ๊ตํ โ ์ค์ ๋ฐ์ดํฐ ์ํธํ์ ์ฌ์ฉํ ๋น๋ฐ ํค๋ฅผ ์์ ํ๊ฒ ๊ตํํด์.
5.
์ํธํ ํต์ โ ์ด์ ๋ถํฐ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ํธํ๋์ด ์ ์ก๋ผ์!
์ด ์ ์ฒด ๊ณผ์ ์ ๋ฐ๋ฆฌ์ด(ms) ๋จ์๋ก ์์๊ฐ์ ์ด๋ฃจ์ด์ ธ์. ์ฌ์ฉ์๋ ์ ํ ๋๋ผ์ง ๋ชปํ์ฃ !
์ํธํ ๋ฐฉ์
graph TD
A[์ํธํ ๋ฐฉ์] --> B[๋์นญํค ์ํธํ<br/>Symmetric]
A --> C[๋น๋์นญํค ์ํธํ<br/>Asymmetric]
B --> B1["๊ฐ์ ํค๋ก ์ํธํ + ๋ณตํธํ<br/>๐ = ๐"]
B --> B2["์ฅ์ : ๋น ๋ฆ<br/>๋จ์ : ํค ์ ๋ฌ ๋ฌธ์ "]
B --> B3["์: AES-256"]
C --> C1["๊ณต๊ฐํค๋ก ์ํธํ<br/>๊ฐ์ธํค๋ก ๋ณตํธํ<br/>๐ โ ๐๏ธ"]
C --> C2["์ฅ์ : ํค ์ ๋ฌ ์์ <br/>๋จ์ : ๋๋ฆผ"]
C --> C3["์: RSA, ECDSA"]
style B fill:#90EE90
style C fill:#87CEEBMermaid
๋ณต์ฌ
๊ตฌ๋ถ | ๋์นญํค ์ํธํ | ๋น๋์นญํค ์ํธํ |
ํค ๊ฐ์ | 1๊ฐ (๊ฐ์ ํค) | 2๊ฐ (๊ณต๊ฐํค + ๊ฐ์ธํค) |
์๋ | ||
์ฉ๋ | ์ค์ ๋ฐ์ดํฐ ์ํธํ | ํค ๊ตํ, ์ธ์ฆ์ ์๋ช
|
๋น์ | ๊ฐ์ ์ด์ ๋ก ์ ๊ทธ๊ณ ์ฌ๋ ๊ธ๊ณ | ์ฐ์ฒดํต (๋๊ตฌ๋ ๋ฃ์ง๋ง, ์ด์ ๊ฐ์ง ์ฌ๋๋ง ์ด ์ ์์) |
HTTPS๋ ์ด ๋ ๊ฐ์ง๋ฅผ ์กฐํฉํด์ ์ฌ์ฉํด์! ์ฒ์์ ๋น๋์นญํค๋ก ์์ ํ๊ฒ ๋์นญํค๋ฅผ ๊ตํํ ๋ค์, ์ค์ ๋ฐ์ดํฐ๋ ๋น ๋ฅธ ๋์นญํค๋ก ์ํธํํด์ ์ฃผ๊ณ ๋ฐ์์. ์ด๊ฑธ ํ์ด๋ธ๋ฆฌ๋ ์ํธํ๋ผ๊ณ ํด์.
HTTPS ์ ์ฒด ๊ตฌ์กฐ
graph TB
subgraph "HTTPS = HTTP + TLS"
A[HTTP ๋ฐ์ดํฐ<br/>์์ฒญ/์๋ต ๋ด์ฉ] --> B[TLS ์ํธํ ๊ณ์ธต<br/>๋ฐ์ดํฐ ์ํธํ + ๋ฌด๊ฒฐ์ฑ]
B --> C[TCP ์ ์ก ๊ณ์ธต<br/>์์ ์ ๋ฐ์ดํฐ ์ ๋ฌ]
C --> D[IP ๋คํธ์ํฌ ๊ณ์ธต<br/>ํจํท ๋ผ์ฐํ
]
end
style A fill:#FFB3B3
style B fill:#90EE90
style C fill:#87CEEB
style D fill:#FFD700Mermaid
๋ณต์ฌ
๊ณ์ธต | ํ๋กํ ์ฝ | ์ญํ |
์์ฉ ๊ณ์ธต | HTTP | ์น ํ์ด์ง ์์ฒญ/์๋ต ๋ด์ฉ |
๋ณด์ ๊ณ์ธต | TLS (SSL) | ๋ฐ์ดํฐ ์ํธํ, ์ธ์ฆ, ๋ฌด๊ฒฐ์ฑ |
์ ์ก ๊ณ์ธต | TCP | ์์ ์ ์ธ ๋ฐ์ดํฐ ์ ๋ฌ ๋ณด์ฅ |
๋คํธ์ํฌ ๊ณ์ธต | IP | ํจํท์ ๋ชฉ์ ์ง๊น์ง ์ ๋ฌ |
Nginx HTTPS ๊ธฐ๋ณธ ์ค์
server {
listen 443 ssl;
server_name example.com;
# SSL ์ธ์ฆ์ ๊ฒฝ๋ก
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# ๊ถ์ฅ TLS ์ค์
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
root /var/www/html;
index index.html;
}
# HTTP โ HTTPS ๋ฆฌ๋ค์ด๋ ํธ (ํ์!)
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
Plain Text
๋ณต์ฌ
HTTP(80 ํฌํธ)๋ก ๋ค์ด์จ ์์ฒญ์ HTTPS(443 ํฌํธ)๋ก ์๋ ๋ฆฌ๋ค์ด๋ ํธ ํด์ฃผ๋ ์ค์ ์ ๊ฑฐ์ ํ์์์! ์ฌ์ฉ์๊ฐ http://๋ก ์ ์ํด๋ ์๋์ผ๋ก https://๋ก ๋์ด๊ฐ๊ฒ ํด์ฃผ๊ฑฐ๋ ์.
ํต์ฌ ์ ๋ฆฌ
HTTPS = HTTP + SSL/TLS ์ํธํ (ํฌํธ 443)
TLS Handshake: ์ธ์ฆ์ ํ์ธ โ ํค ๊ตํ โ ์ํธํ ํต์ ์์
ํ์ด๋ธ๋ฆฌ๋ ์ํธํ: ๋น๋์นญํค๋ก ๋์นญํค๋ฅผ ๊ตํ, ์ดํ ๋์นญํค๋ก ํต์
ํ์์ธ ์ด์ : ๋ณด์, SEO, ๋ธ๋ผ์ฐ์ ๊ฒฝ๊ณ ๋ฐฉ์ง, HTTP/2 ์ง์
Nginx์์ listen 443 ssl + ์ธ์ฆ์ ์ค์ ์ผ๋ก ์ ์ฉ




