De afgelopen weken krijgen we regelmatig vragen over HSTS, en hoe je dit inschakelt voor een website. HSTS staat voor "HTTP Strict Transport Security" en verbetert de SSL beveiliging van een site. In deze blogpost leg ik uit wat HSTS precies is, wat het nut er van is, en hoe je het zelf voor je eigen site kunt inschakelen.
Wat is SSL?
Voordat we het over HSTS gaan hebben, moeten we het eerst kort over SSL hebben. Zoals je wellicht weet, zorgt SSL dat het verkeer tussen de server en de bezoeker van een website versleuteld is. Derden kunnen dit verkeer dan niet inzien of wijzigen. Een SSL verbinding herken je aan het slotje in de adresbalk van je browser, en aan de s in https:// aan het begin van het adres.
Waarom is alleen SSL niet genoeg?
Na het inschakelen van SSL is het standaard zo dat je website dan zowel via het veilige https://, maar ook nog via het onveilig http:// bereikbaar is. Het zou dus voor kunnen komen dat een bezoeker je website nog via het onveilige http:// opvraagt. Verkeer kan dan per ongeluk nog onversleuteld het internet over gaan, waardoor deze gegevens wel kunnen worden afgeluisterd. Hackers kunnen hier ook moedwillig misbruik van maken door een "downgrade attack" uit te voeren op een bezoeker. Ze laten de bezoeker dan eventjes via http:// naar een website gaan, zodat ze bepaalde data (zoals logingegevens of cookies) kunnen stelen.
Hoe HSTS het gebruik van het onveilige http:// kan blokkeren
Door HSTS in te schakelen van je website, maak je het onmogelijk dat een website nog via http:// kan worden bezocht. HSTS vertelt de browser van een bezoeker via een speciale instructie (in een HTTP header) dat een domeinnaam alleen nog via https:// bezocht mag worden. De browser van de bezoeker zal de instructie onthouden, en voortaan alleen nog deze website via https:// opvragen.
Instelopties voor HSTS
Behalve het verplichten van https://, kent HSTS ook een aantal instelopties:
Hoe stel ik HSTS in voor mijn website?
Voordat je HSTS instelt, is het belangrijk om eerst te controleren of je website via https:// te bezoeken is en dat er geen waarschuwing bij het slotje staat in de adresbalk (een uitroeptekentje). Mocht https:// namelijk nog niet goed werken, dan zorgt het inschakelen van HSTS ervoor dat je website onbereikbaar wordt.
Als https:// goed werkt voor je website, dan kun je HSTS omstellen door door een regel toe te voegen aan het .htaccess bestand in de public_html map van je website. Deze regel kun je bovenaan in dit bestand plaatsen:
Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Let er dus op dat je met de bovenstaande regel HSTS gelijk voor de periode van 2 jaar instelt. Het is verstandig om altijd met een lagere waarde te beginnen en te testen, zoals 300 (= 5 minuten) in plaats van 63072000 (= 2 jaar).
Verder is het nodig dat je al het verkeer automatisch doorlinkt naar https://, mocht een bezoeker nog via http:// binnenkomen. Mocht dit nog niet automatisch voor jouw websie gebeuren, dan kun je dit instellen door de onderstaande rewrite-rules in hetzelfde .htaccess bestand op te nemen. Deze rules kun je dan onder de bovenstaande HSTS header toevoegen.
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Aanmelden voor de HSTS preloadlijst
Nadat je HSTS met succes hebt ingesteld, en als je dan vervolgens je website ook wilt aanmelden voor de HSTS preloadlijst, dan kun je dit doen op:
Om je te kunnen aanmelden, zijn er een aantal vereisten waar hstspreload.org op checkt voordat je website aan de lijst kan worden toegevoerd: