티스토리 뷰
HTTP는 평문이기 때문에 도청 가능성이 있으며 보안에 취약하다. HTTP에 SSL을 사용하여 암호화, 인증, 완전성 보호를 더한 것을 HTTPS 라고 한다.
HTTPS = HTTP + 암호화 + 인증 + 완전성 보호
HTTPS는 HTTP 통신을 하는 소켓 부분을 SSL 프로토콜로 대체하고 있다. SSL에서는 공통키 방식과 공개키 암호화 방식을 섞은 암호화 사용하고 있다. 공개키 암호화 방식은 public(공개키)와 private(비밀키)의 쌍을 가진 키를 사용하는 방식이다. 공통키 방식은 하나의 키로 암호화, 복호화를 하는 방식이다. 키를 교환할 때는 공개키를 사용하여 (공통)키를 공유하고, 그 이후 통신에서는 공유된 공통키를 사용한다.
SSL은 인증 기관을 신뢰할 수 있다는 전제로 사용된다.
SSL을 사용한 통신
1. 클라이언트가 처음 통신을 시작할 때, SSL 통신을 시작한다.
이 때, SSL 네고시에이션을 한다. SSL 버전을 설정하고, 암호화와 관련된 리스트인 암호 스위트(Cipher Suite)를 공유한다. 서버에서 응답하는 Certificate 메시지에는 공개키 증명서가 포함된다.
Client -> Server : ClientHello (Handshake)
Client <- Server : ServerHello, Certificate, ServerHelloDone (모두 Handshake)
2. 최초 SSL 네고시에이션이 끝나면, 클라이언트가 Client Key Exchange, Change Cipher Spec, Finished를 송신한다.
Client Key Exchange에는 메시지를 암호화하는데 사용되는 Pre-Master secret이 포함된다. 공개키로 암호화 되어 있다.
Change Cipher Spec에는 이 메시지 이후 통신은 암호키를 사용함을 의미한다.
Client -> Server : ClientKeyExchange(Handshake), ChangeCipherSpec, Finished(Handshake)
Server <- Client : ChangeCipherSpec, Finished(Handshke)
3. Finished 메시지 교환이 완료되면 SSL 접속이 확립된다. 이후, HTTP 통신을 한다.
HTTPS는 암호화 통신을 하기 때문에 리소스가 많이 사용된다. 따라서 HTTP 통신이 가볍기 때문에 항상 HTTPS 통신을 하지는 않는다.
TCP/IP 쉽게, 더 쉽게 + 모두의 네트워크 + 그림으로 배우는 htttp & network basic 책을 읽고, 김영한님 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리한 내용입니다.
'Computer Science > 네트워크' 카테고리의 다른 글
토큰 인증방식(+ 쿠키와 세션 추가내용) (0) | 2021.03.09 |
---|---|
쿠키와 세션 (0) | 2021.02.26 |
네트워크 시리즈 6. 캐시 관련된 HTTP 헤더 (0) | 2021.01.30 |
네트워크 시리즈 5. HTTP 헤더 기본 (0) | 2021.01.29 |
네트워크 시리즈 4. HTTP 상태코드 (0) | 2021.01.27 |
- Total
- Today
- Yesterday
- 인증
- 운영체제
- CS
- 글쓰기미션
- 내부코드
- JS
- 마스터즈코스
- TIL
- JPA
- 개발공부일지
- TCP/IP
- 알고리즘
- 우테코수업
- OS
- 객체지향
- 모의면접준비
- 회고
- DB
- 월간회고
- 네트워크
- java
- 카카오
- 학습로그
- python
- React
- Spring
- Transaction
- javascript
- 우아한테크코스
- 코드스쿼드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |