[네트워크] HTTP & HTTPS

hyyyynjn·2021년 11월 2일
0

면접대비

목록 보기
31/31
post-thumbnail

HTTP

인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 사용하는 프로토콜이다.

  • http는 텍스트를 교환하기 때문에 네트워크상에서 신호를 가로채가면 내용이 노출될 위험이 있다
  • 이러한 보안 취약점을 해결해주는 프로토콜이 HTTPS이다

HTTPS

인터넷 상에서 클라이언트와 서버가 자원을 주고 받을 때 사용하는 HTTP 프로토콜에
보안 계층 프로토콜인 SSL/TLS을 추가하여 정보를 암호화하는 프로토콜이다.

  • 새로운 응용계층 프로토콜이 아니다.
    HTTP의 통신하는 socket 부분을 SSL, TLS라는 프로토콜을 대체한 것이다.
  • HTTP는 암호화 과정이 없이 바로 TCP와 정보를 주고 받지만
    HTTPS는 중간에 SSL 프로토콜을 거쳐 TCP와 정보를 주고 받는다.

https의 통신 흐름

  1. 어플리케이션 서버(A)를 만드는 기업은 https를 적용하기 위한 공개키, 개인키를 만든다
  2. 신뢰할 수 있는 CA기업을 선택하고, 그 기업에게 A의 공개키 관리를 부탁하여 계약한다.
    (CA : 공개키를 저장해주는 신뢰성이 검증된 민간기업)
  3. CA기업은 A 기업의 이름, 공개키, 공개키 암호화 방법 정보를 담은 인증서를 만들고
    해당 인증서를 CA기업의 개인키로 암호화한뒤 A서버에게 제공한다.
  4. A서버는 암호화된 인증서를 갖게된다.
    이후에 A서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청이 오면, 암호화된 인증서를 클라이언트에게 넘긴다.
  5. 클라이언트는 CA 기업의 개인키로 암호화된 인증서를 받게 된다.
  6. 클라이언트의 브라우저는 이미 CA 기업의 공개키를 미리 알고 있기에 브라우저가 이를 복호화한뒤 A서버의 공개키를 얻을 수 있다.
    이제 A서버와 통신할 때는 브라우저가 복호화한 A서버의 공개키를 통해 암호화하여 요청을 보낸다 (HTTPS 사용)

https는 무조건 안전할까?

아니다.
신뢰할 수 있는 CA기업이 아닌 자체 인증서를 발급할 경우 안정하지 않기 떄문에
HTTPS를 사용하지만 브라우저는 "주의 요함", "안전하지 않은 사이트" 와 같은 알림을 보낸다

0개의 댓글