1. TCP 3 Way Handshake
2. 클라이언트는 서버에게 자신이 지원하는 Cipher Suite를 서버에게 알려준다. (Client Hello)
3. 서버는 클라이언트에게 자신이 지원하는 Cipher Suite를 응답해 준다. (Server Hello 시작)
4. 서버는 RSA 공개키가 포함된 서버 인증서를 클라이언트에게 전달한다.
5. 만약 서버가 클라이언트 인증서를 요구할 것이라면, 이에 대한 요청도 함께 전달한다. (Server Hello 완료)
6. 클라이언트는 인증서를 요구받은 경우 인증서를 서버에게 전송한다.
7. 클라이언트는 전송받은 서버 인증서를 검증(CN 일치요부, 해지여부, 신뢰된 CA 여부)한다.
8. 클라이언트는 대칭 암호화에 사용할 임의의 숫자(PreMasterSecret)를 생성하여 서버의 공개키로 암호화해 서버에게 전송한다.
9. 서버는 자신의 개인키로 전송받은 PreMasterSecret를 복호화한다.
10. 서버는 협상된 최종 Cipher를 적용하여 통신할 것을 알리는 종결 메시지를 발송한 후 데이터 전송단계로 넘어간다.
11. 클라이언트도 협상된 최종 Cipher를 적용하여 통신할 것을 알리는 종결 메시지를 발송한 후 데이터 전송단계로 넘어간다.
12. 이후의 데이터 전송은 단계 8에서 공유된 PreMasterSecret로부터 생성된 세션 키를 통해 암/복호화된다.
참고