Webbeveiliging

TLS / SSL

Definitie

TLS (Transport Layer Security) is het protocol dat het verkeer tussen een browser en een server versleutelt, de integriteit ervan bewaakt en de server authenticeert met zijn certificaat. Het heeft het inmiddels afgeschreven SSL vervangen en zorgt voor de "S" in HTTPS. De huidige versie is TLS 1.3.

TLS / SSL, Webbeveiliging

Begint het adres van een site met https://, dan is TLS aan het werk: HTTPS is niets anders dan HTTP dat door een TLS-verbinding wordt getransporteerd. Hetzelfde protocol beschermt ook e-mail (SMTP, IMAP), veel API's en verbindingen met databases. Volgens MDN biedt TLS drie garanties: versleuteling (een derde kan het verkeer niet lezen), integriteit (hij kan het niet ongemerkt wijzigen) en authenticatie (de server bewijst zijn identiteit met zijn certificaat).

Van SSL naar TLS: de versies

SSL is de voorloper van TLS. De naam leeft voort in de dagelijkse praktijk (we spreken nog steeds van een "SSL-certificaat"), maar alle versies zijn al lang afgeschreven:

VersieStatusReferentietekst
SSL 2.0VerbodenRFC 6176 (maart 2011)
SSL 3.0AfgeschrevenRFC 7568 (juni 2015)
TLS 1.0 en 1.1AfgeschrevenRFC 8996 (maart 2021)
TLS 1.2Nog in gebruik, acceptabel als het goed is ingesteldRFC 5246
TLS 1.3Huidige en meest gebruikte versieRFC 8446 (augustus 2018), herzien door RFC 9846 (juli 2026)

RFC 9846 werkt de specificatie van TLS 1.3 bij zonder het versienummer te veranderen: ze blijft compatibel met bestaande implementaties.

Hoe een TLS 1.3-verbinding werkt

Voordat er ook maar een pagina wordt uitgewisseld, voeren browser en server een "handdruk" uit (handshake). Ze worden het eens over de versie en de algoritmen, wisselen genoeg uit om een gezamenlijke sessiesleutel te berekenen, en de server bewijst dat hij de privésleutel bij zijn certificaat bezit.

Schema in vijf stappen van de TLS 1.3-handshake: de browser stuurt ClientHello met een deel van de sleuteluitwisseling, de server antwoordt met ServerHello en beide kanten berekenen de sessiesleutel, de server stuurt zijn certificaat, handtekening en Finished al versleuteld, de browser controleert de certificaatketen en rondt af, daarna verloopt het HTTP-verkeer versleuteld
In TLS 1.3 is alles na de ServerHello versleuteld, ook het certificaat.

TLS 1.3 heeft flink opgeruimd. Sleuteluitwisseling met RSA en statische Diffie-Hellman is verdwenen: alle overgebleven methoden bieden forward secrecy, zodat het later stelen van de privésleutel van de server niet volstaat om opgenomen sessies te ontsleutelen. Ook compressie en heronderhandeling zijn geschrapt. De 0-RTT-modus laat een terugkerende client al gegevens meesturen in het eerste bericht, ten koste van een zwakkere bescherming tegen herhaling.

Video: “Wat is SSL?” (GlobalSign NL)

Voor WordPress

TLS stel je in op het niveau van de webserver of het CDN, niet in WordPress. Bij shared hosting regelt de hostingprovider het, vaak met een Let's Encrypt-certificaat dat automatisch wordt vernieuwd. In WordPress moet je dan nog:

  • het WordPress-adres en het siteadres onder Instellingen, Algemeen op https:// zetten;
  • define( 'FORCE_SSL_ADMIN', true ); toevoegen aan wp-config.php om HTTPS af te dwingen bij het inloggen en in de beheeromgeving;
  • achter een reverse proxy de header X-Forwarded-Proto laten herkennen, anders kan er een doorverwijzingslus ontstaan;
  • HTTP naar HTTPS doorverwijzen (301-redirect) en daarna HSTS overwegen.

Beheer je je eigen server, schakel dan TLS 1.0 en 1.1 uit en gebruik de TLS-configuratiegenerator van Mozilla, die MDN aanbeveelt. Onze gids HTTPS in WordPress behandelt de migratie, gemengde inhoud en certificaten; het artikel over HTTPS, HSTS en Google legt uit wat HTTPS doet voor je vindbaarheid.

Wat TLS niet beschermt

Het slotje garandeert dat de verbinding versleuteld is en dat de server een geldig certificaat voor die domeinnaam heeft. Het zegt niets over de eerlijkheid van de site: een phishingpagina kan prima via HTTPS worden geserveerd. TLS beschermt de site zelf ook niet tegen een kwetsbare plugin of een gestolen wachtwoord.

Verder lezen

  • Artikel HTTPS, HSTS en beveiligingsheaders: waar Google echt rekening mee houdt

Bronnen

  1. RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3 (externe link, opent in een nieuw tabblad)
  2. RFC 8996: Deprecating TLS 1.0 and TLS 1.1 (externe link, opent in een nieuw tabblad)
  3. MDN: Transport Layer Security (TLS) (externe link, opent in een nieuw tabblad)
  4. WordPress Advanced Administration: HTTPS (externe link, opent in een nieuw tabblad)

Alle definities

WordPress-beveiliging, zonder ruis

Eén e-mail wanneer het ertoe doet: nieuw waargenomen aanvallen, updates van de plugin en praktische gidsen. Geen spam, afmelden met één klik.

Begin gratis, stap over op Pro wanneer je eraan toe bent

De gratis versie verbergt WordPress al en verplaatst de inlogpagina. Pro voegt aliassen, tweestapsverificatie en bewaking toe.