HTTPS is gewoon HTTP dat binnen een TLS-versleuteld kanaal draait. TLS (Transport Layer Security) geeft je drie garanties: confidentiality (verkeer is versleuteld), integrity (het kan niet onopgemerkt worden gemanipuleerd), en authentication (je praat echt met de server die in het certificaat staat). Het wordt onderhandeld in een handshake voordat er enige HTTP wordt verstuurd:
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)
