Bijgewerkt op
Met HSTS (HTTP Strict Transport Security) vertelt je website aan de browser van een bezoeker: open mij voortaan alleen nog via https. Na het eerste bezoek gaat de browser dan nooit meer via een onbeveiligde verbinding naar je website, ook niet als iemand het adres zonder https intypt of op een oude link klikt. Zo kan niemand onderweg het verkeer onderscheppen voordat de doorverwijzing naar https plaatsvindt. Testsites zoals internet.nl kijken er ook naar.
Voordat je begint
HSTS werkt alleen als je website al goed via https bereikbaar is. Controleer daarom eerst twee dingen:
- Er staat een geldig SSL-certificaat op je domeinnaam. Lees Het gratis SSL-certificaat bij je hostingpakket.
- Altijd een beveiligde verbinding staat aan. Je vindt dit in je klantportaal bij Hosting, je pakket, Beveiliging en dan SSL.
Zet je HSTS aan terwijl het certificaat niet klopt, dan kunnen bezoekers je website niet meer openen. Ze kunnen de waarschuwing van de browser dan ook niet wegklikken.
HSTS aanzetten
Je zet HSTS aan met één regel in het bestand .htaccess in de map van je website.
- Ga naar Hosting in je klantportaal en klik op je pakket.
- Klik in de balk op Bestanden & data, kies FTP & bestanden en klik op Bestandsbeheer openen. Werk je liever met een FTP-programma, dan kan dat ook.
- Ga naar de map httpdocs/public.
- Open het bestand .htaccess. Staat het er niet, maak dan een nieuw bestand aan met precies die naam. Let op de punt aan het begin, en zorg dat er geen .txt achter komt.
- Zet deze regel helemaal bovenaan het bestand:
Header always set Strict-Transport-Security "max-age=31536000" - Sla het bestand op. De wijziging werkt meteen.
Gebruik je WordPress, dan staat er in de .htaccess al een blok tussen # BEGIN WordPress en # END WordPress. Zet de regel daarboven en niet ertussen: WordPress herschrijft dat blok af en toe en haalt je regel dan weg.
Wat betekent max-age?
Het getal achter max-age is het aantal seconden dat de browser onthoudt dat je website alleen via https mag. 31536000 seconden is een jaar. Dat is de gebruikelijke waarde en ook wat internet.nl verwacht.
Wil je eerst voorzichtig testen, begin dan met max-age=300 (vijf minuten). Werkt alles een paar dagen goed, zet het dan op 31536000.
includeSubDomains en preload
Op andere websites zie je de regel vaak met extra woorden, zoals:
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
- includeSubDomains laat HSTS ook gelden voor al je subdomeinen. Gebruik dit alleen als echt elk subdomein een geldig certificaat heeft, ook subdomeinen die niet bij ons draaien. Anders zijn die daarna niet meer te openen.
- preload is alleen nodig als je je domeinnaam wilt aanmelden voor de lijst die in browsers is ingebouwd (hstspreload.org). Daar kom je niet makkelijk weer af. Voor de meeste websites is het niet nodig.
Twijfel je, gebruik dan de eenvoudige regel met alleen max-age.
Controleren of het werkt
Doe de websitetest op internet.nl. Bij HTTPS zie je dan of HSTS goed staat. Ben je wat technischer, dan zie je in de ontwikkelaarshulpmiddelen van je browser, op het tabblad Netwerk, de header strict-transport-security bij je pagina staan.
HSTS weer uitzetten
Verander max-age in max-age=0 en laat de regel een tijdje staan. Een browser die je website na die wijziging bezoekt, vergeet de instelling dan. Haal je de regel meteen weg, dan blijven browsers die je website al kenden zich eraan houden tot max-age verlopen is. Bij een jaar duurt dat dus een jaar. Daarom is het verstandig om eerst met een korte max-age te testen.
Goed om te weten
Deploy je je website vanaf GitHub? Dan overschrijft elke deploy de bestanden in je website, ook de .htaccess. Zet de regel daarom in de .htaccess in je repository.
Was dit artikel nuttig?
Laat het ons weten, dan weten we welke uitleg beter kan.