본문 바로가기
네트워크

HTTP & HTTPS

by dsungc 2024. 11. 6.

HTTP와 HTTPS의 차이

 

HTTP

정의

- 클라이언트와 서버 간의 request, response를 주고받는 비연결형 텍스트 기반 통신 프로토콜

 

 

 

특징

- 80번 포트 활용 (HTTP 서버가 80번포트에서 요청 대기, 클라이언트가 80번 포트로 요청 전송)

- 애플리케이션 계층에서 작동하고, TCP/IP 기반 동작

- 비연결성, 무상태성의 특징을 가짐

 

비연결성

- 처음 연결을 맺은 후 요청(Request)과 한번의 응답(Response)이후 연결이 종료

- 매 요청마다 재연결해야함

 

무상태성

- 프로토콜에서 Client의 상태를 기억하지 않음
- Client의 상태를 보관하기 위해 쿠키나 세션, JWT토큰 등을 이용하여 Client의 상태를 유지

 

 

HTTP 메서드

 

주요 메서드

- create, get, put, delete

 

https://www.youtube.com/watch?v=hMYIGTzNcH8

 

Get

 

- URL 주소 뒤에 ?문자를 활용하여 인자 값 전달

- 이 인자 값을 Query라고 지칭

- 정보 일정 기간 캐싱 

 

Post (Put, Delete)

 

- 요청문 이후에 공백라인을 두어 인자 값 전달(페이로드)

- payload기입 형식을 FORM DATA

- Get의 쿼리기입방식에 비해 많은 데이터 요청 가능

- 자료 등록 Or 로그인과 같은 보안이 필요한 방식에 사용

 

 

 

 

HTTPS

정의

- HTTPS는 HTTP에 TLS/SSL 암호화 계층을 추가한 프로토콜

 

특징

- 데이터를 암호화하여 전송함으로써 보안을 강화하고, 데이터의 무결성과 기밀성 보장

- 중간에서 탈취된 데이터도 해독이 어려움

- 443번 포트 사용

 

 

HTTPS 동작 방식

- TCP 3-way handshake 이후에 SSL/TLS 핸드셰이크 진행

 

(3-way handshake 이후의 과정입니다)

 

사전지식 - 대칭키, 비대칭키

2024.10.30 - [네트워크] - 대칭키 & 비대칭키

 

1. Client Hello

- 클라이언트가 서버에 지원 가능한 암호화 방식과 데이터 전송

2. Server Hello

- 서버가 클라이언트의 요청을 수락하고

- 서버의 공개키가 담긴 SSL 인증서 전송

 

서버의 SSL 인증서

- 서버의 공개키 포함

- CA(인증기관)의 비공개키로 서명된 상태

 

3. 인증서 검증 

- 클라이언트가 서버로부터 받은 인증서를 검증하여 신뢰할 수 있는 서버인지 확인

 

인증서 검증

2024.11.16 - [네트워크] - 서버의 인증서 유효성 검사

 

 

주요과정

a. CA 인증서 신뢰 확인

- 대부분의 브라우저는 공신력 있는 인증기관(CA)의 정보를 내장

b. CA의 공개키로 인증서 서명 복호화

- 복호화 실패 시, 인증서가 위조된 것으로 간주하며 경고 표시

c. 서버 공개키 get

- 인증서 검증 성공 시, 서버의 공개키를 신뢰하며 사용

 

4. Parameter secret 생성 후, 서버로 전달

- 클라이언트는 대칭키 생성을 위한 프리마스터 키(암호화에 사용할 초기 키 데이터)를 생성

- 프리마스터 키를 통해 세션키(대칭키) 생성

 

주요 과정

- 프리마스터 키를 서버의 공개키로 암호화한 뒤 서버로 전송

- 암호화된 데이터를 통해 대칭키 교환 과정의 보안을 유지

 

5.  parameter secret 복호화

- 서버는 자신의 비공개키(Private Key)를 사용해 프리마스터 키를 복호화 -> 세션키(대칭키) get

 

6. ssl통신 종료 후, HTTPS 통신 시작

- 클라이언트 <-> 서버 는 서로 동일한 대칭키를 사용해 데이터를 암호화하여 통신

- 데이터는 대칭키로 암호화

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

서버의 인증서 유효성 검사  (0) 2024.11.16
대칭키 & 비대칭키  (0) 2024.10.30
[iOS] About Notification & Delegation  (0) 2024.10.26
[iOS] About WidgetKit - 1  (0) 2024.10.24
[iOS] About JWT(Jason Web Token)  (0) 2024.10.17