본문 바로가기
기초 CS 정리

HTTP & HTTPS

by 쿠리의일상 2023. 2. 8.

HTTP (HyperText Transfer Protocol)

  • 인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약
  • HTTP는 텍스트 교환이므로 누군가 네트워크에서 신호를 가로채면 내용이 노출되는 보안 이슈가 존재 → 이런 보안 문제를 해결해주는 프로토콜이 HTTPS

HTTPS

  • 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용하여 클라이언트와 서버가 자원을 주고 받을 때 쓰는 통신 규약
  • 텍스트를 공개키 암호화 방식으로 암호화 한다.

 

 

HTTPS 통신 흐름

  1. 애플리케이션 서버를 만드는 기업(A)은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다.
  2. 신뢰할 수 있는 기업(CA)을 선택하여 그 기업에게 공개키 관리를 부탁하여 계약을 한다. (CA, Certificate Authority 공개키를 저장해주는 신뢰성이 검증된 민간기업)
  3. 계약 완료된 CA 기업은 해당 기억의 이름, A서버 공개키, 공개키 암호화 방법을 담은 인증서를 만들고 해당 인증서를 CA 기업의 개인키로 암호화하여 A 서버에게 제공
  4. A서버는 암호화된 인증서를 가지게 되어 A서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청이 오면, 이 암호화된 인증서를 클라이언트에게 건내준다.
  5. 클라이언트가 main.html 파일으 달라고 A서버에 요청한다면, HTTPS 요청이 아니기에 CA 기업이 A서버의 정보를 CA기업의 개인키로 암호화한 인증서를 받게 된다. (CA 기업의 공개키는 신뢰할 수 있는 기업이라 브라우저가 이미 인증서를 탐색하여 해독이 가능)
  6. 브라우저는 해독한 뒤 A서버의 공개키를 얻게 됨
  7. 클라이언트가 A서버와 Handshaking 과정에서 주고받은 난수를 조합하여 pre master key를 생성한 뒤 A서버의 공개키로 해당 대칭키를 암호화하여 서버로 보낸다.
  8. A서버는 암호화된 대칭키를 자신의 개인키로 복호화하여 클라이언트와 동일한 대칭키를 획득
  9. 이후 클라이언트-서버 사이의 통신을 할 때 주고받는 메세지는 대칭키를 이용하여 암호화, 복호화를 진행
  • HTTPS도 무조건 안전한 것은 아니며, CA 기업이 아닌 자체 인증서 발급한 경우 등은 브라우저에서 주의 요함, 안전하지 않은 사이트와 같은 알림으로 주의 받게 된다.

'기초 CS 정리' 카테고리의 다른 글

로드 밸런싱(Load Balancing)  (0) 2023.02.10
TLS/SSL handshaking  (0) 2023.02.09
대칭키와 공개키  (0) 2023.02.07
TCP/IP의 흐름제어, 혼합제어  (1) 2023.02.05
TCP 3way handshake  (0) 2023.02.05