TLS 1.2 full handshake

TLS 1.2는 보통 두 번 왕복한 뒤 HTTP를 보낸다

ECDHE 기반 full handshake 기준으로, hello 협상 뒤 인증서와 ServerKeyExchange 서명을 확인하고 Finished까지 검증한다.

클라이언트 발신 서버 발신 암호화 전환
클라이언트
ClientHello지원 버전, cipher suite, client random, 확장을 제안한다.
서버
ServerHello + Certificate + ServerKeyExchange + Done선택한 조합, 인증서 체인, 서명된 ECDHE 공개값을 돌려준다.
클라이언트
ClientKeyExchange + ChangeCipherSpec + Finished클라이언트 공개값을 보내고, 새 키로 전환한 뒤 암호화된 Finished를 보낸다.
서버
ChangeCipherSpec + Finished서버도 같은 키로 전환하고 암호화된 Finished를 보낸다.
암호화 전환 지점

TLS 1.2에서는 ChangeCipherSpec 이후의 Finished부터 새로 만든 키로 보호된다. 그전 hello와 인증서 메시지는 대부분 평문이다.

TCP

1 RTT

3-way handshake로 전송 경로를 연다.
TLS

2 RTT

full handshake에서 인증과 키 합의를 완료한다.
HTTP

그 다음

암호화된 레코드 안에 애플리케이션 데이터가 들어간다.