HTTPS란?
- HTTP 프로토콜을 암호화한 네트워크 통신 프로토콜
- 클라이언트와 서버간의 통신을 암호화하기 위해 SSL이나 TLS를 사용
- 보안 계층(SSl 혹은 TLS)이라는 독립적은 프로토콜 계층 위에 HTTP 프로토콜을 얹는 방식

SSL이란?
- Secure Sockets Layer의 줄임말
- 네트워크 통신을 암호화하기 위한 표준 기술
- 현재는 더 이상 업데이트 되고 있지 않으며, 권장되지 않는 방식
TLS란?
- Transport Layer Security
- SSL의 다음 세대로 개발된 암호화 표준 기술
- 큰 틀에서는 SSL과 유사한 방식으로 클라이언트와 서버를 인증
TLS HandShake
- handshake는 클라이언트와 서버간의 메시지 교환을 나타냄
- HTTPS 웹에 처음 커넥션할 때 진행 됨
- handshake는 크게 4가지의 단계로 진행 됨
- Client Hello
- 클라이언트가 서버에 접속을 하겠다고 하는 인사
- 클라이언트는 브라우저가 지원하는 암호화 방식을 서버에 제시
- 랜덤 데이터를 생성하여 서버에 전송
- Server Hello
- 서버가 클라이언트에 하는 인사
- 클라이언트가 제시한 암호화 방식을 선택하여 클라이언트에 통지
- 서버의 Public Key가 포함된 서버 인증서를 클라이언트에 전송
- 랜덤 데이터를 생성하여 클라이언트에 전송
- Key Exchange
- 클라이언트는 서버와 주고 받은 랜덤 데이터를 참고해서 암호화 키를 생성해서 서버에 전달
- 키는 서버가 전달한 Public Key로 암호화
- Finished
- 클라이언트와 서버 모두 Finished 메시지 전송
- 이후 클라이언트가 생성한 키로 암호화한 데이터를 통신
