HTTP 란?
- HTTP는 Hypertext Transfer Protocol의 약자로 서로 다른 시스템들 사이에서 통신을 주고받게 해주는 가장 기초적인 통신 규약을 의미한다.
- HTTP는 기본적으로 평문 데이터 전송을 원칙으로 하기 때문에 개인의 프라이버시가 오가는 서비스들(전자상거래, 전자메일, 사내 문서 등)에 사용하기 부적합하다.
HTTP 장단점
- 장점
- 무상태(Connectionsless)
- 클라이언트가 요청을 서버에 보내고 서버가 적절한 응답을 클라이언트에 보내면 바로 연결이 끊긴다
- 비연결성이란 특징 때문에 서버 입장에선 통신 연결을 유지하지 않아 리소스 낭비가 줄어드는 장점이 있다
- 통신마다 새로운 세션을 열어야 하는 작업은 클라이언트가 서버에게 요청 시마다 인증해야 하는 단점이 생겼다
- 비연결 (Stateless)
- 연결을 끊는 순간 클라이언트와 서버의 통신은 끝나며, 상태 정보를 유지하지 않는다.
- 무상태(Connectionsless)
- 단점
- 네트워크 상에 HTTP로 주고받은 문서는 공개가 되는 단점이 있다
이러한 보안상 문제를 해결해주는 프로토콜이 HTTPS!
HTTPS 란?
- 기존 HTTP가 위변조에 취약하다는 점을 보완하기 위해 암호화나 인증 구조를 더한 것을 HTTPS(HTTP Secure)라고 부른다.
- HTTPS는 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer) 프로토콜을 이용해 웹브라우저(클라이언트)와 서버가 데이터를 주고받는 통신규약이다.
- HTTPS는 SSL(보안 소켓 계층)을 사용함으로써 HTTP의 보안 문제를 해결, SSL은 서버와 브라우저 사이에 안전하게 암호화된 연결이 일어나도록 도와주어 민감한 정보가 도난당하지 않게 이를 방지해주는 역할을 한다.
- 즉 HTTPS는 HTTP정보를 암호화하며, 공개키 암호화 방식을 거쳐 작동한다
HTTPS 장단점
- 장점
- 네트워크 상에서 열람, 수정이 불가능하므로 안전
- 검색엔진 최적화(SEO)
- 단점
- HTTPS는 설치 및 인증서를 유지하는 데 추가 비용이 발생
- 암호화하는 과정이 웹 서버에 부하를 줌
- HTTP에 비해 속도가 느림
- 인터넷의 연결이 끊긴 경우 재인증 시간이 소요
- HTTP는 비연결형으로 웹페이지를 보는 중 인터넷 연결이 끊겼다가 다시 연결되어도 페이지를 계속 볼 수 있음
- HTTPS는 소켓(데이터를 주고 받는 경로) 자체에서 인증을 하기 때문에 인터넷의 연결이 끊기면 소켓도 끊어져서 다시 HTTPS 재인증이 필요
SSL 란 ?
- SSL 인증서란 클라이언트와 서버 간의 통신을 제삼자가 보증을 해주는 문서이다.
- 클라이언트가 서버에 접속한 직후에 서버는 클라이언트에게 이 인증서를 전달한다. 그러면 클라이언트는 이 인증서를 보고 신뢰할 수 있는 사람인지 확인을 한 다음에 데이터를 보내는 등의 절차를 수행하게 된다.

SSL 동작 순서
SSL 장점
- 전달되는 내용이 다른 사람에게 노출되는 것을 막을 수 있다.
- 클라이언트가 접속하려는 서버가 신뢰할 수 있는 서버 인지 알 수 있다.
- 전달되는 내용이 악의적으로 변경되는 것을 막을 수 있다.
SSL에서 사용하는 암호화의 종류
- 대칭키
- 암호를 만드는 행위인 암호화를 할 때 사용하는 일종의 비밀번호 키(key)라고 한다. 이 키에 따라서 암호화된 결과가 달라지기 때문에 키를 모른다면 암호를 푸는 행위인 복호화도 할 수 없다. 이 중, 대칭키 방식은 동일한 키로 암호화와 복호화를 할 수 있는 기법을 말한다. 그러나, 대칭키의 단점이 있다. 암호를 주고받는 사람들 사이에서 이 키(key)로 암호화하라고 사용자에게 전달하는 것이 어렵다는 점이다. 왜냐면 중간에 대칭키가 유출된 다면 키를 획득한 공격자는 암호의 내용을 복호화하여 무슨 데이터를 전달하려고 했는지 알 수 있기 때문에 HTTPS를 쓰는 이유가 없어진다. 그래서 나온 방식이 공개키 기법이다.
- 공개키
- HTTPS의 원리 공개키 방식(Public Key Infrastructure)은 두 개의 키를 갖게 되며, A키로 암호화하면 B키로 복호화가 가능합니다. 반대로 B키로 암호화를 하면 A키로 복호화를 할 수 있습니다. 여기서 두 개의 키 중 하나는 공개 키(public key)이고 다른 하나는 비공개(private key)가 됩니다. 비공개 키는 private 한 사용자가 가지고 있게 되며, 공개 키는 타인에게 공개되는 키입니다. 유저가 공개 키를 이용하여 데이터를 암호화한 뒤, 비공개 키의 소유자에게 전달하면, 비공개 키의 소유자는 비공개 키로 복호화하여 그 데이터를 얻는 간단한 원리입니다.
HTTP 와 HTTPS의 차이점
- HTTP는 따로 암호화 과정을 거치지 않기 때문에 중간에 패킷을 가로챌 수 있고, 수정할 수 있습니다. 따라서 보안이 취약해짐을 알 수 있습니다. 이를 보완하기 위해 나온 것이 HTTPS입니다. HTTPS는 중간에 암호화 계층을 거쳐서 패킷을 암호화합니다.
- HTTP 동작 순서 : TCP → HTTP
- HTTPS 동작 순서 : TCP → SSL → HTTP
'TIL' 카테고리의 다른 글
| TIL 객체지향(OOP) VS 절차지향(PP) 프로그래밍 (1) | 2022.10.18 |
|---|---|
| TIL 스코프(Scope) (0) | 2022.10.18 |
| TIL 상태관리를 왜 할까요? 그리고 평소 state 관리는 어떻게 하시나요? (0) | 2022.10.18 |
| TIL SSR과 CSR 개념과 차이점 (0) | 2022.10.18 |
| TIL useEffect()란? (0) | 2022.07.31 |