HTTPS는 어디에 쓸까
- 보안성, 웹 브라우저에 url옆에 자물쇠있는 것
- 안전한 connection 보장
http을 먼저 알아야 한다.
HTTP란?
- 정의: HTTP(HyperText Transfer Protocol)는 웹 브라우저(클라이언트)와 웹 서버 간의 요청–응답 방식의 통신 프로토콜.
- 특징
- Stateless: 요청 간 상태 정보를 저장하지 않음.
- TCP 기반: 3-way handshake로 연결 후 데이터 송수신.
- 평문 전송(Plain Text): 요청과 응답 데이터가 암호화되지 않고 그대로 전송됨.
HTTP 동작흐름
- HTTP는 클라이언트와 서버간의 비동기적 통신을 위한 요청-응답 프로토콜이다.
- 일반적으로 웹 페이지는 클라이언트, 서버로 동작한다. 요청은 요청상태를 포함한다.
- 통신전에 connection을 생성한다. 이는 TCP 특성이다
- TCP 연결: 클라이언트가 서버로 TCP 연결 요청 (3-way handshake).
- HTTP 요청 전송: 클라이언트 → 서버 (메서드, URL, 헤더, 바디 등 포함).
- HTTP 응답 수신: 서버 → 클라이언트 (상태코드, 헤더, 바디 포함).
- 연결 종료 또는 재사용: HTTP/1.1은 기본적으로 keep-alive, HTTP/2·3은 다중화(multiplexing) 지원.
TCP 통신제어 방식 : slow start, congestion avoidance
- 어느정도의 데이터는 클라이언트와 서버간의 통신이 발생하는데 여기서 여러 round trip이 발생한다.
- TCP의 slow start는 1RTT에 최대로 보낼 수 있는 데이터양 (Bandwidth)을 알지 못하고, exponentially 데이터량을 늘려나간다.
- Slow Start: TCP 전송 시작 시 네트워크 대역폭을 알 수 없으므로, 작은 윈도우 크기(cwnd)에서 시작하여 전송량을 지수적으로 증가.
- 방식 : Slow Start는 한번에 보내는 데이터량을 exponentially 늘려가는 방식이다. 이때 Threshold를 정해서 한계선으로 두어 Threshold를 넘으면 Slow Start알고리즘을 실행시킨다.
- Congestion Avoidance: 혼잡 임계치(ssthresh)에 도달하면 윈도우 크기를 선형적으로 증가시켜 네트워크 혼잡을 완화.
TCP의 한계와 HTTPS도입배경
한계
- TCP는 Plain Text로 server, client간 통신방식이므로 보안상 취약하다.
- 중간자 공격(MITM), 도청, 변조에 취약.요청 URL, 파라미터, 쿠키, 폼 데이터 모두 노출 가능.
해결
- 따라서 TCP + TLS를 적용하게 된다. 이것이 HTTPS방식이다.
- HTTP에 TLS(Transport Layer Security) 암호화 계층을 추가

HTTPS
정의 : 기존 HTTP + TLS를 합쳐놓은 통신방식이다.
설명
- HTTP는 Presentative Layer, TLS는 Transport Layer 계층이 해당한다. HTTP와 Transport Security가 콜라보레이션하여 통신 메시지를 암호하한다.
- HTTPS에서는 TLS자격증명을 웹 서버가 가지고 있어야 한다.
- 위 과정은 (private/public)key를 웹서버에 저장하는 과정이다
- 통신메시지들은 암호화되며 웹 서버에 저장된 키롤 복호화한다.
계층
- HTTP: 애플리케이션 계층 (OSI 7계층)
- TLS: 전송 계층과 애플리케이션 계층 사이에 위치 (실제로는 TCP 위에 동작)
TLS
- 데이터 암호화, 무결성 보장, 서버 인증을 제공.
TLS / SSL
- 두 용어는 동의어이다.
- SSL은 Secure socket layer이며, 인터넷에서 적용되는 기존 보안방식이며
- TLS 는 SSL에서 보완되어 등장한 개념이다.
HTTPS(TLS) HandShake 과정
- 클라이언트가 HTTPS 서버에 접속하면 서버에서 자격증명을 제시한다.
- 브라우저는 이 자격증명(인증서)이 valid한지 검사한다. 인증서는 CA에서 발급한다.
- 이 검증과정은 인증서에 등록되어있는 도메인과 클라이언트가 요청한 도메인과 일치하는지 검사, 일치해야됨
- 이 검증과정이 끝나면, 대칭키를 교환한다. 공개키 기반 암호화이며, 대칭키(세션키)를 생성한다.
- 이후 모든 http데이터는 세션키로 암호화된다.
HTTPS가 암호화하는것
- HTTPS handshake가 완료되면, 클라이언트와 서버간의 모든 통신내용들은 암호화된다.
- url, data, cookie, other headers
- 유일하게 암호화되지 않는 부분은 domain / host이다,.
- 왜냐하면 커넥션 생성 후, http요청이 타겟 서버에 보내지면 sercure한 커넥션을 생성한다.
HTTPS에서 알아야할 개념
- CA : 인증서 발급기관
- Lets Encrypt : TLS
- HSTS : 브라우저가 HTTP말고 HTTPS로 접속하다록 강제
- HTTP/2.3, HTTPS : HTTP/2이상은 TLS를 필수적으로 사용한다.