HTTPS er blot HTTP, der kører inde i en TLS-krypteret kanal. TLS (Transport Layer Security) giver dig tre garantier: confidentiality (trafik er krypteret), integrity (den kan ikke manipuleres uden at det opdages) og authentication (du taler virkelig med den server, der er navngivet i certifikatet). Det forhandles i et handshake, før nogen HTTP sendes:
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)
