HTTP

  • 파이퍼텍스트 트랜스퍼 프로토콜
  • 서로 다른 시스템들 사이에서 통신을 주고 받게 하는 가장 기본적인 프로토콜
  • 서버에서 브라우저로 전송하는 데이터가 암호화 되지 않음

HTTPS

  • 파이퍼텍스트 트랜스퍼 프로토콜 시큐어
  • HTTPS의 TLS(보안 소켓 계층) 사용
  • TLS: 서버와 브라우저 사이에 안전하게 암호화된 연결을 만들 수 있게 도와주고, 서버와 브라우저가 민감한 정보를 주고받을 때 해당 정보가 도난당하는 것을 막아줌.
  • http 메시지 바디를 암호화함. 헤더는 암호화 하지 않음

왜 HTTPS?

  1. 보안성
  2. SEO 검색엔진 최적화
    • 구글은 HTTPS 웹사이트에 가산점을 준다.
    • AMP(가속화된 모바일 페이지)를 만들 때 https를 사용해야만 한다.

HTTPS 연결의 TLS 핸드셰이크 과정

  • 사용자의 브라우저에 신뢰할 수 있는 인증 기관(CA)의 공개키가 내장되어있다.
  • 사이트는 사이트의 공개키와 CA의 디지털 서명이 포함된 인증서를 가지고 있다.
  • 사용자가 사이트에 접속하면, 사이트는 인증서를 보낸다.
  • 사용자의 브라우저가 내장된 CA의 공개키를 사용하여 인증서의 서명을 검증하고, 이를 통해 사이트의 공개키를 확인한다.
  • 사용자는 임의의 pre-master secret을 생성하고 사이트의 공개키로 암호화하여 서버로 보낸다.
  • 서버는 pre-master secret을 복호화하고 master-secret을 생성 후 이를 이용해서 세션키를 생성한다.(사용자도 동일한 절차로 세션키를 생성한다.)
  • 이 세션키는 대칭키라고도 부르며 https 바디를 암호화하여 통신한다.