Visual RFC.
ALL RFCs / RFC 5246
Read the RFC ↗

RFC 5246 / START HERE

TLS 1.2, before the details

TLS: Transport Layer Security, version 1.2

TLS protects a connection against eavesdropping and tampering. Version 1.2 describes the handshake, key agreement, and protected records used for application data.

The idea in one picture

  1. Endpoints negotiate TLS 1.2

  2. They establish connection keys

  3. Protected application data follows

A simplified picture of the idea; the chapters explain the actual mechanisms.

Why it exists

This guide explains an earlier TLS version that differs from TLS 1.3. Understanding the negotiated version matters when reading handshake diagrams.

A familiar example

A client and server that support TLS 1.2 agree on connection parameters and keys before exchanging protected application data.

Helpful background

You can start here without reading another RFC. If these ideas are unfamiliar, these short introductions may help.

What you’ll learn next

Begin with chapter one, or choose a topic.

  1. A TLS 1.2 handshakeHello messages negotiate parameters before keys and Finished messages establish protection.
  2. Pending and current keysRead and write each have pending and current connection states.
  3. Records protect fragmentsThe record layer frames fragments and applies the chosen protection construction.
  4. Finished checks the transcriptA derived verification value binds the handshake messages to the negotiated secret.
  5. TLS 1.3 changes the designTLS 1.3 is a redesign, not merely a new suite name in the old handshake.
Start with chapter one →
EXPLORE THIS PROTOCOL

TLS versions and editions

RFC 9846 revises TLS 1.3; it is not TLS 1.4. Publication status and negotiated protocol version are different.

This introduction explains RFC 5246 (2008). This publication has a successor; see the related guides and the RFC status. Read the original RFC ↗