본문 바로가기
system_fundamentals/security_cryptography

TLS termination

by 죄니안죄니 2026. 5. 15.
반응형
TLS terminationTLS terminationTLS termination
 
 
 

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

댓글