1. HTTP란
Hyper Text Transfer Protocol의 약자로 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다.
즉 HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로 80번 포트를 사용하고 있다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며 클라이언트는 80번 포트로 요청을 보낸다.
애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동한다. HTTP는 상태를 가지고 있지 않아 stateless 프로토콜이다.
HTTP의 단점으로는 암호화가 되지 않아서 정보를 제 3자가 조회하기가 너무 쉬웠다. 그래서
HTTPS가 등장하게 되었다.
2. HTTPS란
HTTP에서 암호화가 추가된 프로토 콜이다. 433번 포트를 사용하며, 네트워크 상에서 중간에 제 3자가 정보를 볼 수 없도록 공개키 암호화를 지원하고 있다.
공개키 암호화 : 공개키로 암호화를 하면 개인키로만 복호화(암호를 푸는 것) 할 수 있다. -> 개인키는 나만 가지고 잇으므로, 나만 볼 수 있음
개인키 암호화 : 개인키로 암호화하면 공개키로만 복호화 할 수 있다. -> 공개키는 모두에게 공개되어 있으므로, 내가 인증한 정보임을 알려서 신뢰성 확보
3. HTTPS의 동작 과정⭐
서버는 클라이언트가 요청을 보낼 때 암호화를 하기 위한 공개키를 생성해야되는데, 일반적으로는 인증된 기관에 공개키를 전송하여 인증서를 발급받고 있다.
자세한 과정은
- A기업은 HTTP 기반의 애플리케이션에 HTTPS를 적용하기 위해 공개키/개인키를 발급함
- CA 기업에게 돈을 지불하고, 공개키를 저장하는 인증서의 발급을 요청함
- CA 기업은 CA 기업의 이름, 서버의 공개키, 서버의 정보 등을 기반으로 인증서르 ㄹ생성하고, CA 기업의 개인키로 암호화하여 A기업에게 이를 제공함
- A기업은 클라이언트에게 암호화된 인증서를 제공함
- 브라우저는 CA기업의 공개키를 미리 다운받아 갖고 있어, 암호화된 인증서를 복호화함
- 암호화된 인증서를 복호화하여 얻은 A기업의 공개키로 데이터를암호화하여 요청을 전송함
추가적인 HTTPS의 장점은
검색엔진 최적화(SEO)에 있어서도 도움을 받는다.
4. 결론
개인 정보와 같은 민감한 데이터를 주고 받아야 한다면 HTTPS를 이용해야 하지만, 단순한 정보 조회 등만을 처리하고 있다면 HTTP를 이용하면 된다
참고 :
https://mangkyu.tistory.com/98
https://velog.io/@blackb0x/HTTPHTTPS%ED%86%B5%EC%8B%A0%EA%B3%BC-%EC%86%8C%EC%BC%93%ED%86%B5%EC%8B%A0
https://jeong-pro.tistory.com/89
'개발합시다. > BackEnd 공부' 카테고리의 다른 글
SSH란 (0) | 2021.07.08 |
---|---|
로드밸런싱(Load Balancing) (0) | 2021.07.07 |
Django client ip address 얻기 (0) | 2021.07.07 |
Django - Redis 세션 & 쿠키 & 캐시 정리 (0) | 2021.07.07 |
Reverse Proxy & Foward Proxy의 장단점 정리 (0) | 2021.07.07 |