Pre Master Secret 값은 서버가 인증서를 통해 전달한 공개키로 암호화하여 전송되며 서버는 해당 값을 공개키에 매칭되는 개인키로 복호화한다.
암호화된 HTTP 데이터를 전송하기 위 정보를 교환하는 과정
Client Hello
Pre Master Secret 을 생성하기 위한 클라이언트 랜덤 데이터와 클라이언트가 지원하는 암호화 방식 목록, 세션 ID를 전송
Server Hello
Pre Master Secret 을 생성하기 위한 서버 랜덤 데이터와 인증서, Client Hello 단계에서 받은 암호화 방식 목록 중에서 사용 가능한 암호화 방식을 선택해서 전송.
Pre Master Secret 전송
인증서를 수신한 클라이언트는 내장된 CA의 공개키를 이용해서 인증서를 복호화(브라우저는 CA 리스트를 가지고 있음)
클라이언트는 서버 랜덤데이터와 클라이언트 랜덤데이터를 조합하여 Pre Master Secret 를 생성한 후 해당 값을 인증서에 포함된 서버의 공개키로 암호화하여 서버에 전송. 서버에서는 공개키에 매칭되는 개인키로 복호화한 Pre Master Secret 값을 통해 Session Key 를 얻어낸다.
SSL Handshake 종료
전송 데이터의 암호화 / 수신 데이터의 복호화
데이터를 동일한 Session Key 를 통해 암호화 및 복호화
클라이언트는 전송할 데이터를 Pre Master Secret를 통해 얻은 Session Key 를 통해 암호화하여 전송
서버는 Pre Master Secret를 통해 얻은 Session Key 를 통해 수신한 데이터를 복호화하여 처리
HTML ,Text 문서, 이미지, 음성, 영상, Json, Xml 등 거의 모든 형태의 데이터 전송 가능
기본 TCP / IP 포트로 80을 사용
HTTP 의 특징
클라이언트 - 서버 구조
클라이언트는 서버에 요청을 보내고 응답을 대기하며 서버는 요청에 대한 결과를 만들어서 응답
무상태 프로토콜(Stateless)
서버가 클라이언트의 상태를 보존하지 않는다. 때문에 응답 서버를 바꾸거나 스케일 아웃 등의 서버 내부에서 작업을 하여도 클라이언트에 영향을 미치지 않으므로 서버의 확장성이 높아진다. 반면, 클라이언트는 매 요청마다 필요한 정보를 모두 보내야하므로 트래픽 측면에서 부담이 될 수 있다.
비연결성
HTTP는 기본적으로 연결을 유지하지 않는 통신 모델이다. 요청과 응답이 종료되면 연결을 끊음으로서 자원 낭비를 방지한다.
HTTPS
HyperTextTransferProtocol overSecure Socket Layer
HTTP 의 보안이 강화된 버전
통신의 인증과 암호화를 위해 HTTP의 커넥션의 양 끝단에서 일반 텍스트를 이용하는 대신 SSL 이나 TLS 프로토콜을 통해 세션 데이터를 암호화