HTTP와 HTTPS

devMag 개발 블로그·2022년 4월 21일
1

HTTP vs HTTPS

  • HTTP는 HTTPS에 비해 보안상 취약하다.
  • HTTPS는 암호화/복호화 과정이 필요해서 HTTP에 비해서 속도가 느리다.
  • HTTPS는 인증서를 발급하고 유지하기 위한 추가 비용이 발생한다.
  • 인터넷 연결이 끊긴 경우 HTTP는 다시 연결되어 페이지를 계속 볼 수 있지만, HTTPS는 다시 HTTPS 인증을 해줘야한다.
  • HTTP의 특징중 stateless 같은 부분도 추가로 공부해주면 좋다.

1. HTTP (Hyper Text Transfer Protocol)

HTTP는 Hyper Text Transfer Protocol의 줄임말으로써 웹상에서 서버와 클라이언트간에 데이터를 주고 받는 프로토콜을 의미한다. 텍스트, 이미지, 영상, JSON 등 거의 모든 데이터를 전송할 수 있다.
쉽게 말해서 웹 환경에서 브라우저와 웹서버가 통신하는 방법을 말한다. 클라이언트(브라우저)가 서버에 요청을 보내고 서버는 요청에 대한 응답을 보낸다. 이 때, 요청하고 응답하는 내용을 HTTP 메시지 라는 편지 형태로 주고받는다.

프로토콜(Protocol)?
컴퓨터나 네트워크 장비가 서로 통신하기 위해 미리 정해 놓은 약속, 규약


2. HTTP는 안전할까?

HTTP 통신은 클라이언트-서버간 통신에 별다른 보안 조치가 없다. 그래서 중간에 네트워크 신호를 가로챌 가능성이 있다. 고객의 개인정보 등이 담겨있다면 큰 문제가 될 것이다. 해당 문제를 보완하기 위해 나온 것이 HTTPS이다.


3. HTTPS (Hyper Text Transfer Protocol over Secure Socket Layer)

기존 HTTP 프로토콜은 전송계층의 TCP위에서 동작한다. 여기서 SSL(Secure Sockets Layer) / TLS(Transport Layer Security)라는 보안계층이 전송계층 위에 올라가게 된다. HTTPS는 SSL / TLS위에 HTTP를 얹어서 보안이 보장된 HTTP 통신을 하는 프로토콜이다. 해당 통신은 공개키 암호화 방식을 사용해서 구현된다.

SSL / TLS

  • 보안 통신을 하기 위한 보안용 프로토콜
  • SSL을 표준화해서 나온것이 TLS이다.
  • 응용계층과 전송계층 사이에서 안전한 보안 채널을 형성하는 역할을 한다.

4. 공개키 암호화 방식이란?

공개키 암호화 방식에는 공개키개인키 두 종류의 키가 존재한다.
한쪽 키로 데이터를 암호화하면 다른쪽 키로만 복호화가 가능하다. 여기서 개인키는 보통 서버를 운영하는 회사가, 공개키는 CA(Certificate Authority)라는 인증받은 기업들이 관리하게 된다.


5. HTTPS의 클라이언트-서버 요청-응답 과정은?

  1. 먼저 CA는 서버 운영 기업이 넘겨준 공개키를 인증서 발급자인 CA의 이름 등과 같이 묶어서 CA가 가지고 있는 개인키로 암호화하고 SSL인증서를 발급해준다.
  2. 클라이언트에서 요청을 하면 서버는 클라이언트에게 SSL 인증서(공개키를 포함한)를 보내게된다.
  3. 클라이언트(브라우저)는 대표적은 CA 리스트와 해당 기업들의 공개키를 보유하고 있다. 유효성 검사를 통해서 인증서에 적혀있는 CA이름과 클라이언트(브라우저)가 갖고있는 CA이름이 같다면 CA의 공개키로 SSL 인증서를 복호화한다.
  4. SSL 내부에 들어있는 서버의 공개키를 갖고 요청을 암호화해서 서버에 보낸다.
  5. 서버는 갖고 있는 개인키로 요청을 복호화하고 해석해서 응답은 다시 암호화해서 보낸다.

참고
Jemni | HTTP vs HTTPS의 차이점을 알아보자
DOLOLAK | [HTTP] HTTPS란? 비전공자를 위한 HTTPS 개념 알아보기
장구리 | HTTPS와 SSL/TLS의 뜻과 차이

profile
최근 공부 내용 정리 Notion Link : https://western-hub-b8a.notion.site/Study-5f096d07f23b4676a294b2a2c62151b7

0개의 댓글