HTTP / HTTPS - 1

CorinBeom·2025년 10월 8일
0

CS

목록 보기
19/22
post-thumbnail

웹 개발을 공부하거나 면접 준비를 하다보면 HTTP와 HTTPS같은 용어들을 한번씩은 들어봤을 것이다
이 게시글에서는 이 둘의 차이가 무엇인지 간단하게 알아보고, 각각의 자세한 특성은 따로 포스팅 하겠다

🌐 HTTP

HTTP (Hypertext Transfer Protocol)
웹에서 클라이언트(브라우저)와 서버 간 데이터를 주고받기 위한 통신 규약이다.
즉, 우리가 웹페이지를 요청하고 서버에서 HTML, CSS, 이미지 등을 받아올 때 사용하는 규칙인것이다.

HTTP는 문제가 있다..

❌ HTTP는 암호화되지 않은 평문 데이터를 전송한다!

그래서 네트워크 상에서 누군가 패킷을 가로채면,
사용자의 아이디, 비밀번호, 쿠키 등 민감한 정보가 그대로 노출될 수 있는 심각한 문제가 있다.

그래서 등장한것이,,

🛡️ HTTPS

이 문제를 해결하기 위해 등장한 것이
HTTPS (Hypertext Transfer Protocol Secure)이다

✅ HTTPS = HTTP + 데이터 암호화 (TLS/SSL)

HTTPS는 데이터를 암호화하여 제3자가 볼 수 없게 만들어준다.
즉, 같은 요청이라도 중간에서 데이터를 가로채더라도 내용을 해독할 수 없게 되는 것이다

어떤 식으로 적용하고, 어떤 식으로 동작하는지 알아보자


🔑 HTTPS를 적용하려면?

HTTPS를 적용하기 위해서는 인증서(Certificate) 가 필요하다.
이 인증서는 공인된 기관(CA, Certificate Authority)에서 발급받을 수 있다.

인증서 발급 과정 요약

  1. 서버는 CA에 인증서를 요청한다 (서버 정보, 공개키 포함)

  2. CA는 요청받은 정보를 검증하고 서버의 공개키와 함께 인증서를 생성한다

  3. 생성된 인증서는 CA의 개인키로 암호화되어 서버로 전달된다

  4. 서버는 이 인증서를 클라이언트에게 제공하여 신뢰성을 증명한다

인증서에는 “이 서버가 진짜 이 도메인 주인이다”라는 정보가 들어있음

🔄 HTTPS 동작 원리 (TLS 핸드셰이크)

HTTPS는 단순히 암호화만 하는 게 아니라,
안전한 암호화 키를 서로 합의하는 과정이 존재한다.
이를 TLS Handshake(핸드셰이크) 라고 부른다

1️⃣ 클라이언트 → 서버

클라이언트(브라우저)가 서버에 접속을 시도하면서 다음을 보낸다.

  • 지원하는 암호화 알고리즘 목록

  • 프로토콜 버전

  • 랜덤 값

2️⃣ 서버 → 클라이언트

서버는 클라이언트의 요청을 받고 다음 정보를 응답한다.

  • 선택한 암호화 알고리즘

  • 서버 인증서(CA 서명 포함)

  • 서버의 랜덤 값

클라이언트는 이 인증서를 받아 CA의 공개키로 복호화하여 진짜 서버인지 확인한다

3️⃣ 클라이언트 → 서버

검증이 끝난 클라이언트는 새로운 임시 키(Pre Master Secret)를 생성하고,
이를 서버의 공개키로 암호화하여 서버로 전송한다

4️⃣ 서버 → 클라이언트

서버는 자신의 개인키로 복호화하여 Pre Master Secret을 얻는다

5️⃣ 세션 키 생성

양쪽 모두 Pre Master Secret과 랜덤 값을 조합하여
Master Secret → 세션 키(Session Key) 를 생성한다

6️⃣ 이후 통신

이제 클라이언트와 서버는 동일한 세션 키를 이용해
대칭키 방식으로 암호화된 통신을 주고받는다.
(이 단계부터는 빠르고 안전하게 데이터 송수신이 가능)

profile
Before Sunrise

0개의 댓글