HTTPS chỉ đơn giản là HTTP chạy bên trong một kênh được mã hoá bằng TLS. TLS (Transport Layer Security) cho bạn ba đảm bảo: confidentiality (lưu lượng được mã hoá), integrity (không thể bị sửa mà không bị phát hiện), và authentication (bạn thực sự đang nói chuyện với server ghi trong certificate). Nó được thương lượng trong một handshake trước khi gửi bất kỳ HTTP nào:
Client Server
│──── ClientHello ──────────────────────▶│ (TLS versions, cipher suites, random)
│◀─── ServerHello + Certificate ─────────│ (chosen cipher + cert with public key)
│ │
│ verify cert against a trusted CA │
│ agree on keys (e.g. ECDHE key exchange)│
│ │
│──── Finished (encrypted) ──────────────▶│
│◀─── Finished (encrypted) ───────────────│
│========= encrypted application data ====│ (now HTTP flows, encrypted)
