HTTP와 HTTPS의 차이
HTTP
정의
- 클라이언트와 서버 간의 request, response를 주고받는 비연결형 텍스트 기반 통신 프로토콜
특징
- 80번 포트 활용 (HTTP 서버가 80번포트에서 요청 대기, 클라이언트가 80번 포트로 요청 전송)
- 애플리케이션 계층에서 작동하고, TCP/IP 기반 동작
- 비연결성, 무상태성의 특징을 가짐
비연결성
- 처음 연결을 맺은 후 요청(Request)과 한번의 응답(Response)이후 연결이 종료
- 매 요청마다 재연결해야함
무상태성
- 프로토콜에서 Client의 상태를 기억하지 않음
- Client의 상태를 보관하기 위해 쿠키나 세션, JWT토큰 등을 이용하여 Client의 상태를 유지
HTTP 메서드
주요 메서드
- create, get, put, delete
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 |