Το HTTPS είναι απλώς HTTP που τρέχει μέσα σε ένα κανάλι κρυπτογραφημένο με TLS. Το TLS (Transport Layer Security) σου δίνει τρεις εγγυήσεις: confidentiality (η κίνηση είναι κρυπτογραφημένη), integrity (δεν μπορεί να παραποιηθεί χωρίς να γίνει αντιληπτό), και authentication (μιλάς πραγματικά με τον server που αναφέρεται στο certificate). Διαπραγματεύεται σε ένα handshake πριν σταλεί οποιοδήποτε HTTP:
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)
