반응형



TLS Termination(또는 SSL Termination)은 한 줄로 말하면:
HTTPS 암호화를
중간 장비(로드밸런서/프록시)에서 해제하고,
뒤 서버에는 평문으로 전달하는 구조
다.
가장 흔한 구조
실무에서는 보통 이렇게 생김.
브라우저
↓ HTTPS
Nginx / Load Balancer
↓ HTTP
Spring Backend
여기서 TLS Termination 지점
Nginx/LB에서 HTTPS 해제
되는 것.
즉:
TLS Handshake 종료 지점
이다.
왜 Termination이라 부르나?
TLS 연결이:
프록시/LB에서 끝나기 때문
이다.
즉:
클라이언트 ↔ Nginx
까지만 HTTPS.
이후 내부는
Nginx ↔ Backend
HTTP일 수 있다.
실제 예시
엄청 흔한 구조:
- Nginx
- HAProxy
- AWS ALB
- Cloudflare
등이 TLS 종료 담당.
흐름 자세히
STEP 1 — 브라우저 접속
https://api.example.com
접속.
STEP 2 — Nginx가 TLS 처리
여기서:
- 인증서
- TLS Handshake
- ECDHE
- AES-GCM
전부 수행.
STEP 3 — 복호화 완료
Nginx가:
HTTPS → HTTP
변환.
STEP 4 — Backend 전달
예:
http://spring:8080
로 전달.
Backend는 편해짐
Spring 입장에서는:
그냥 일반 HTTP 요청
처럼 보인다.
왜 이렇게 쓰나?
엄청 중요한 이유 많다.
1. 성능
TLS는 CPU 많이 사용.
특히:
- Handshake
- AES-GCM
- 인증서 처리
비용 있음.
그래서
TLS 전담 장비
가 처리하면 효율적.
2. 인증서 중앙 관리
Backend 서버 100대에:
인증서 각각 설치
안 해도 된다.
대신
Nginx/LB 한 곳만 관리
하면 됨.
3. Backend 단순화
Backend는:
HTTP만 처리
하면 된다.
Spring Boot에서도 흔함.
4. 로드밸런싱 쉬움
TLS 종료 후:
- 라우팅
- 리버스 프록시
- 캐싱
- 압축
등 수행 가능.
실제 실무 구조
엄청 흔함:
Client
↓ HTTPS
Cloudflare
↓ HTTPS
AWS ALB
↓ HTTP
Nginx
↓ HTTP
Spring
그런데 문제도 있음
엄청 중요.
내부망이 평문 HTTP
즉:
Nginx ↔ Backend
구간은 암호화 안 될 수 있음.
그래서 위험 가능성
만약 내부망 털리면:
평문 패킷 노출 가능
하다.
그래서 보안 강한 환경은
내부도 HTTPS 사용.
즉:
End-to-End TLS
구조.
TLS Passthrough와 차이
헷갈리기 쉬움.
TLS Termination
프록시가 HTTPS 해제
TLS Passthrough
프록시는 그대로 전달
Backend가 직접 TLS 처리
비교
| 방식 | TLS 종료 위치 |
| Termination | LB/Nginx |
| Passthrough | Backend |
Kubernetes에서도 중요
Ingress Controller:
- NGINX Ingress Controller
- Traefik
등이 TLS termination 담당 많이 함.
Nginx 설정 예시
server {
listen 443 ssl;
ssl_certificate ...
ssl_certificate_key ...
location / {
proxy_pass http://spring_backend;
}
}
여기서 핵심
443 HTTPS 수신
↓
복호화
↓
proxy_pass HTTP 전달
이다.
X-Forwarded-Proto 중요
Backend는 원래 HTTPS인지 알아야 할 수 있다.
그래서 보통:
proxy_set_header X-Forwarded-Proto https;
설정.
Spring에서 자주 발생하는 문제
HTTPS termination 환경에서:
redirect loop
secure cookie 문제
자주 생김.
그래서 Spring Boot 설정
예:
server.forward-headers-strategy=framework
등 사용.
핵심 한 줄
TLS Termination은:
로드밸런서나 프록시가 HTTPS/TLS를 대신 처리하고,
복호화된 요청을 내부 Backend 서버로 전달하는 구조
다.
반응형
'system_fundamentals > security_cryptography' 카테고리의 다른 글
| HTTP vs HTTPS 실제 차이 (0) | 2026.05.15 |
|---|---|
| HTTPS 성능 비용 (0) | 2026.05.15 |
| Forward Secrecy (0) | 2026.05.15 |
| Self-signed 문제 (0) | 2026.05.15 |
| CA 체계 (1) | 2026.05.15 |
댓글