[네트워크] HTTP와 HTTPS(SSL/TLS) 이해하기

2025. 8. 31. 12:27·CS/네트워크

HTTP

HyperText Transfer Protocol의 약자로 쉽게 말해, 웹에서 데이터를 주고받는 약속이다. 

 

HTTPS(HyperText Transfer Protocol Secure)

= HTTP + Secure 

HTTP에 보안(SSL/TLS 암호화)을 입힌 버전이다. 

HTTP 자체는 평문(암호화 없음)이라 중간에서 패킷을 엿보게 되면 전송하는 데이터가 다 노출이 된다. (스니핑, Sniffing) 그래서 HTTP위에 보안 계층(SSL/TLS)을 얹은 것이다.

 

SSL(Secure Sockets Layer)

= 보안 소켓 계층

클라이언트와 웹 서버 간의 통신을 암호화하여 데이터가 노출되는 것을 막기 위한 보안 프로토콜을 의미한다.

SSL을 위해서는 SSL 인증서가 필요하다. 

SSL 접속은 신뢰할 수 있는 인증 기관에 의해 발행된 인증서를 통해 이루어진다. 웹 사이트가 SSL 인증서를 사용하면, 이는 웹 사이트가 정당하고 신뢰할 수 있는 사이트라는 것을 사용자에게 보여주는 것이다. 

 

비대칭키 암호화 (Asymmetric Encryption) 

키가 쌍으로 존재하며, 공개키로 암호화를 진행하고 개인키로 복호화를 진행한다. 연산이 무겁고 느리다는 단점이 있다.

  • 공개키 : 모두가 접근할 수 있는 키 
  • 개인키 : 본인만 보관하는 키 

대칭키 암호화 (Symmetric Encryption) 

실제 통신에서 사용이 되며, 암호화와 복호화에 '같은 키를 사용'하는 방식을 의미한다. 이 방법은 빠르고 효율적이지만 키를 안전하게 전달하는 것이 어렵다는 단점이 있다.

SSL 수행 과정 

1. 3-way handshake 수행 : 클라이언트와 서버 간의 새로운 연결을 하기 위해 서로 인지하고 연결을 준비하는 가정을 수행한다. 

2. SSL handshake 수행 : 클라이언트와 서버 간의 통신을 '암호화를 위한 필요한 정보를 교환' 하는 과정을 수행한다. 

3. 실제 데이터 통신 수행 : 클라이언트와 서버 간의 연결 준비와 필요한 정보를 교환하는 과정을 마치고, 통신을 위한 비밀키가 생성되어 실제 데이터를 요청하고 응답하는 통신을 수행한다. SSL 통신에서는 'SSL 인증서'를 발급받아서 암호화된 데이터를 주고받는다. 

 

💡 SSL Handshake 과정 

사전에 3-way handshake 과정을 통해서 클라이언트와 서버 간의 초기 연결이 확인되어야 SSL Handshake가 수행된다. SSL Handshake의 경우 HTTPS 연결이 설정될 때 수행이 되며, 클라이언트와 서버간의 통신을 암호화하는데 '필요한 정보를 교환' 한다. 

 

1. 클라이언트 → 서버 : Client Hello

브라우저가 서버에게 먼저 말을 건다. 클라이언트는 사용할 수 있는 암호 방식들 리스트와 난수를 하나 전달한다. 

 

2. 서버 → 클라이언트 : Server Hello + Certificate 

서버는 암호 방식 중에 하나를 선택하고 난수를 클라이언트에게 전달한다. 그리고 인증서도 함께 전달한다. 이 인증서 안에는 서버의 공개키와 CA의 서명이 들어있다. 

 

3. 클라이어트는 서버가 준 인증서를 확인한다. 

이 인증서를 발급한 CA가 믿을 만한 곳인지, 인증서가 만료되지는 않았는지 확인하고 괜찮으면 서버가 진짜임을 신뢰한다. 

 

4. 세션키 생성 

클라이언트와 서버는 합의한 방식으로 세션키를 하나 만든다. 그리고 앞으로 주고 받는 내용은 이 세션키로 잠가서 보낸다. 

 

5. 암호화 시작 확인 

클라이언트와 서버가 신호를 주고받고, 마지막으로 확인 메시지를 서로 주고 받는다. 이렇게 되면 보안 대화 채널이 완성된다. 

 

이후에는 웹 페이지 요청/응답, 쿠키 같은 실제 모든 데이터가 잠긴 상태로 오간다. 중간에서 봐도 내용을 알아챌 수 없다. 

'CS > 네트워크' 카테고리의 다른 글

[네트워크] OSI 7계층  (0) 2025.10.14
[네트워크] 데이터 통신 과정  (0) 2025.10.05
[네트워크] TCP/IP 4계층  (1) 2025.08.31
'CS/네트워크' 카테고리의 다른 글
  • [네트워크] OSI 7계층
  • [네트워크] 데이터 통신 과정
  • [네트워크] TCP/IP 4계층
erika0915
erika0915
백엔드 개발자가 되고 싶어요 .
  • erika0915
    erikoding
    erika0915
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • 프로젝트 (13)
        • 끼니콩 (3)
        • 덕메랑 (3)
        • handDoc (7)
        • Haeil (0)
      • Java (9)
        • 클린코더스 (0)
      • Spring (30)
      • Redis (3)
      • CS (7)
        • 운영체제 (3)
        • 컴퓨터구조 (0)
        • 네트워크 (4)
      • DevOps (2)
      • 코딩테스트 (0)
      • Tech (14)
        • TDD (1)
        • 정리 (5)
        • 우테코 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring
    코드레빗
    자바
    springboot
    레디스
    promtail
    git
    운영체제
    AI
    파인튜닝
    네트워크
    java
    github
    OS
    MongoDB
    지라
    coderabbit
    jira
    깃
    도커
    docker
    스프링
    Network
    몽고디비
    CoolSMS
    redis
    STT
    스프링부트
    TDD
    깃허브
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
erika0915
[네트워크] HTTP와 HTTPS(SSL/TLS) 이해하기

티스토리툴바