✦ Oplossingen · SSL- en certificaatfouten

“Website gebruikt HSTS”: waarom je niet kunt doorklikken

Chrome zegt dat je een site nu niet kunt bezoeken omdat hij HSTS gebruikt, zonder knop om door te gaan? Lees wat HSTS is, waarom dat zo is en hoe de beheerder het oplost.

Zo ziet de foutmelding eruit

  • U kunt domein.nl nu niet bezoeken omdat de website HSTS gebruikt
  • You cannot visit domein.nl right now because the website uses HSTS.
  • Your connection is not private
  • Uw verbinding is niet privé

Waarom gebeurt dit?

HSTS (HTTP Strict Transport Security) is een instelling waarmee een website tegen browsers zegt: bezoek mij de komende tijd alléén via een geldige https-verbinding. De site stuurt daarvoor de header Strict-Transport-Security mee, met een geldigheidsduur (max-age). De browser onthoudt dat. Sommige domeinen staan zelfs vooraf in een lijst die in de browser is ingebouwd: de HSTS-preloadlijst.

Gaat er daarna iets mis met het certificaat (verlopen, verkeerde naam, onbekende uitgever), dan toont de browser de gewone certificaatwaarschuwing, maar zónder de knop om toch door te gaan. Dat is bewust: HSTS bestaat juist om te voorkomen dat iemand je met een vals certificaat naar een nagemaakte site lokt en jij dan doorklikt.

De melding zegt dus niet dat HSTS het probleem is. HSTS is de reden dat je niet kunt doorklikken; de echte oorzaak is een certificaatfout. Die staat in de foutcode onderaan de pagina.

Zo herken je dit probleem

  • De waarschuwing lijkt op “Uw verbinding is niet privé”, maar onder Geavanceerd staat geen ‘Doorgaan naar …’.
  • In de tekst staat letterlijk dat de website HSTS gebruikt.
  • Onderaan staat een foutcode zoals NET::ERR_CERT_DATE_INVALID of NET::ERR_CERT_COMMON_NAME_INVALID: dat is de eigenlijke fout. Zie ERR_CERT_DATE_INVALID en ERR_CERT_COMMON_NAME_INVALID.
  • Vrijwel elke site geeft dit? Dan staat waarschijnlijk je klok verkeerd of breekt een antivirus of netwerk het verkeer open: zie Uw verbinding is niet privé.

Zo los je het op, stap voor stap

Menunamen kunnen per versie of toestel iets anders heten. Loop de stappen op volgorde af en stop zodra het werkt.

  1. Lees de foutcode onder de melding

    Klik op Geavanceerd of op de foutcode. Die vertelt wat er met het certificaat aan de hand is: verlopen, andere naam of onbekende uitgever. Daarnaar richt je de oplossing, niet naar HSTS.

  2. Controleer klok, netwerk en antivirus

    Verschijnt de fout bij veel sites, controleer dan datum en tijd, probeer een ander netwerk en zet een HTTPS-scan van je antivirus tijdelijk uit. Op openbaar wifi rond je eerst het inlogportaal af. Bij sites met HSTS valt een onderschept certificaat sneller op, en dat is juist goed.

  3. Probeer het later of meld het aan de eigenaar

    Ligt het aan één site, dan heeft die een certificaatprobleem dat alleen de beheerder kan oplossen. Chrome geeft zelf aan dat het vaak tijdelijk is. Probeer het later opnieuw en meld het aan de eigenaar, met de foutcode.

  4. Beheerder: herstel het certificaat

    De enige echte oplossing is een geldig certificaat voor alle namen van de site. Controleer de vervaldatum en de namen. Is het verlopen, volg dan SSL-certificaat verlopen: vernieuwen.

    openssl s_client -connect domein.nl:443 -servername domein.nl </dev/null 2>/dev/null | openssl x509 -noout -dates -subject -ext subjectAltName
  5. Beheerder: bekijk de HSTS-header van je site

    Controleer of en hoe je site HSTS instelt. includeSubDomains betekent dat álle subdomeinen ook een geldig certificaat moeten hebben, ook interne of vergeten subdomeinen. preload geeft aan dat je in de ingebouwde lijst van browsers wilt.

    curl -sI https://domein.nl/ | grep -i strict-transport-security
    # voorbeeld van een header:
    # Strict-Transport-Security: max-age=31536000; includeSubDomains
  6. Alleen voor je eigen domein of testomgeving: HSTS-gegevens wissen

    Heb je zelf een testdomein of eigen apparaat dat ooit HSTS stuurde, dan kun je die onthouden instelling in Chrome wissen. Ga naar chrome://net-internals/#hsts, vul onder Delete domain security policies het domein in en klik op Delete. Dit werkt niet voor domeinen in de preloadlijst en lost geen certificaatfout op bij een site van een ander. Gebruik het niet om een waarschuwing bij een externe site te omzeilen.

  7. Beheerder: HSTS tijdelijk afbouwen als dat echt nodig is

    Moet een subdomein tijdelijk zonder https, zet de header dan op max-age=0. Browsers die je site opnieuw via https bezoeken, vergeten HSTS dan. Wie de site niet opnieuw bezoekt, onthoudt de oude instelling tot de oude max-age is verlopen. Repareer het certificaat dus liever.

    # nginx
    add_header Strict-Transport-Security "max-age=0" always;

Let op: Zoek niet naar trucs om de HSTS-blokkade bij een andere site te omzeilen. De blokkade beschermt je precies op het moment dat iemand een vals certificaat zou kunnen gebruiken.

Voor beheerders: wat preload betekent

Met de preload-optie en een aanmelding bij de preloadlijst wordt je domein ingebouwd in browsers. Bezoekers krijgen dan vanaf het allereerste bezoek alleen https. Dat is sterk, maar moeilijk terug te draaien:

  • Het hele domein en alle subdomeinen moeten blijvend een geldig certificaat hebben, ook interne systemen en oude testomgevingen.
  • Een fout certificaat betekent dat niemand de site kan openen, zonder knop om door te gaan.
  • Verwijderen uit de lijst kan, maar het duurt lang: de wijziging moet eerst in nieuwe browserversies terechtkomen en gebruikers moeten die installeren.
  • chrome://net-internals/#hsts helpt niet voor domeinen in de preloadlijst.

Zet preload en includeSubDomains dus pas aan als je zeker weet dat elk subdomein https heeft en dat de verlenging van certificaten bewaakt wordt.

Wanneer schakel je hulp in?

  • Je eigen website is onbereikbaar door deze melding en het certificaat herstellen lukt niet direct.
  • Je domein staat in de HSTS-preloadlijst en een subdomein of intern systeem heeft geen geldig certificaat.
  • Je wilt HSTS of preload instellen en weet niet zeker of al je subdomeinen https hebben.
  • Op meerdere apparaten in je netwerk krijgen bekende sites deze melding.

Lukt het niet? Wij helpen

Kom je er met deze stappen niet uit, of wil je het liever niet zelf doen? We kijken online mee of komen langs. Hulp op afstand kost €20 per uur; komen we langs, dan is de prijs op aanvraag. Je weet vooraf waar je aan toe bent.

Aanvraag

Hulp aanvragen

Schrijf kort wat er misgaat en wat je al hebt geprobeerd. Kies of we bellen, online meekijken of langskomen.

Veelgestelde vragen

Vragen over dit probleem

Waarom is er geen knop om toch door te gaan?

Omdat de website heeft aangegeven dat hij alleen via een geldige https-verbinding bezocht mag worden. De browser houdt zich daaraan om je tegen nagemaakte sites te beschermen.

Lost het wissen van HSTS in chrome://net-internals het op?

Alleen voor een eigen test- of thuisapparaat zonder preload. Bij een echte website blijft de certificaatfout bestaan; die moet de beheerder oplossen.

Is HSTS de oorzaak van het probleem?

Nee. HSTS zorgt alleen dat je niet kunt doorklikken. De oorzaak is een certificaatfout, die je in de foutcode ziet.

Ik heb HSTS aangezet en nu werkt een subdomein niet meer.

Waarschijnlijk staat includeSubDomains aan en heeft dat subdomein geen geldig certificaat. Geef het subdomein een certificaat.