레퍼런스 :
https://developer.mozilla.org/ko/docs/Web/HTTP/Messages
https://preamtree.tistory.com/38
HyperText Transfer Protocol
텍스트 기반으로 통신할 수 있는 프로토콜
HTTP 요청의 첫째줄에는 HTTP 메서드와 타겟 URL HTTP 버전이 명시되어 들어간다.
HTTP 헤더는 대소문자를 구분하지 않는 문자열 (Host, User-Agent) : 헤더값으로 구성되어져 있다.
요청의 본문은 헤더의 공백문자 뒤에 담아 넣을 수 있다.
기본적으로 요청 구조와 많이 유사하지만
응답구조의 첫번째 줄에는 응답에 대한 상태코드가 같이 표기된다.
HTTP는 평문으로 발송되기 때문에 도청하기 아주 쉽다.
통신 상대를 확인하지 않기 때문에 위장이 쉽다.
보안에 너무 취약하다
HTTP + Secure Socket Layer (SSL)
대칭키
암호화와 복호화를 같은 키를 이용해서 할 수 있는 암호화 알고리즘.
공개키 - 개인키에 비해 속도가 빠르지만
통신하는 양측이 동일한 대칭키를 써야한다는 문제점이 있다.
웹상에 공개한 공개키와, 서버가 가지고 있는 개인키를 이용해서
클라이언트는 공개키를 통해서 암호화한 데이터를 주면 서버는 이를 개인키로 복호화 하여 데이터를 읽고 처리한다.
대칭키에 비해서 안전하지만, 복잡하다.
설명이 정말 잘되어 있다.
HTTPS 등록 과정은 다음과 같다.
우선 기업은 공개키와 개인키를 만든 후 믿을 수 있는 인증기관(CA)에 돈을 주고 자신의 개인키를 관리해줄 것을 의뢰한다.
인증기관(CA)은 기업을 검토 후 기업에 대한정보와, 등록된 공개키, 공개키 암호화 방법등의 정보를 담은 인증서를 만든후 해당 인증서를 인증기관의 개인키로 암호화하여 관리한다.
CA는 굉장히 신뢰할 수 있는 기관이기 때문에 CA의 공개키는 브라우저에 내장되어져 있고, 이용자는 내장된 공개키를 통해서 이를 복호화 할 수 있다.
만약 클라이언트가 HTTPS 사이트에 등록하면 흐름은 다음과 같다.