network · high priority
HTTPS & TLS
웹 보안의 기반 — 암호화·인증서·핸드셰이크
intermediate 난이도2시간토스카카오네이버당근배민
시작 전
이해도
매우 낮음
학습 개요
탄생 배경
쉬운 설명
복잡한 개념을 실생활 비유로 설명합니다.
“은행 금고 배달”
HTTPS는 은행 금고로 편지를 배달하는 것입니다. 먼저 은행(서버)이 공증된 신분증(인증서)을 제시해 신원을 확인합니다. 비공개로 자물쇠(세션 키)를 교환한 후, 이후 모든 편지는 이 자물쇠로 잠겨 배달되어 중간에서 열 수 없습니다.
핵심 개념
TLS 1.3 핸드셰이크 (1-RTT)
1
Client Hello
지원하는 TLS 버전, 암호화 스위트 목록, 클라이언트 난수 전송
2
Server Hello + 인증서
선택된 암호화 스위트, 서버 인증서(공개키 포함), 서버 난수 전송
3
인증서 검증
브라우저가 CA 체인으로 서버 인증서 유효성 확인. 루트 CA는 OS/브라우저에 내장.
4
세션 키 생성 후 암호화 통신
ECDHE로 공유 비밀 교환 → 세션 키 생성. 이후 AES-256 대칭 암호화로 빠르게 통신.
TLS 1.2 vs TLS 1.3
| 항목 | TLS 1.2 | TLS 1.3 |
|---|---|---|
| 핸드셰이크 | 2-RTT | 1-RTT |
| 재연결 | 1-RTT | 0-RTT (세션 재개) |
| 취약 알고리즘 | RSA, RC4, MD5 허용 | 제거됨 |
| Forward Secrecy | 선택적 | 필수 (ECDHE만) |
실무 적용
어떤 상황에서 사용하는가
사용자 로그인, 결제 정보 등 민감한 데이터를 안전하게 전송해야 하는 모든 웹서비스
어떻게 적용하는가
Let's Encrypt로 무료 인증서 발급 및 자동 갱신. Vercel·Netlify는 자동 HTTPS. HSTS 헤더로 HTTP → HTTPS 강제. nginx 설정 시 ssl_protocols TLSv1.2 TLSv1.3으로 구버전 차단.
흔한 실수와 안티패턴
- 인증서 만료 감지 모니터링 없으면 서비스 중단 — Let's Encrypt 자동 갱신 스크립트 필수
- 개발 환경에서 HTTPS 필요 시 mkcert로 로컬 인증서 생성
- HTTP → HTTPS 리다이렉트와 HSTS를 함께 설정해야 Mixed Content 경고 방지
면접 질문
중급토스카카오네이버
답변 방향 힌트
기밀성·무결성·인증 세 가지 관점
반드시 언급할 키워드
- TLS 핸드셰이크
- 인증서 검증
- 대칭·비대칭 암호화 조합
예상 꼬리 질문
- TLS 1.2와 TLS 1.3의 핵심 차이는?
- Forward Secrecy가 중요한 이유는?