HTTPS verbinding

Onderwerpen

  1. In het kort
  2. Waarom zou jij je hier druk om maken?
  3. Hoe werkt het: HTTP, HTTPS, certificaten en HSTS
  4. Wat kun je aan een slechte score doen?

1. In het kort

Wanneer je een website bezoekt zijn er twee mogelijkheden om een verbinding te maken: beveiligd en onbeveiligd. De onbeveiligde verbinding, HTTP, is lange tijd de standaard geweest, maar dat moeten we echt los laten. Met HTTPS krijg je nog steeds dezelfde pagina’s, over een beveiligde verbinding.

2. Waarom zou jij je hier druk om maken?

Waarom zou jij je druk maken om die beveiligde verbinding? Er zijn twee belanghebbenden: de website bezoeker en de website bezitter.

2.1. Als website bezoeker

Met een veilige verbinding (HTTPS) kunnen anderen niet met je meekijken. Bijvoorbeeld op plekken waar publieke WiFi wordt aangeboden en een hacker een WiFi accesspoint nabootst biedt HTTPS bescherming.

Wanneer de browser een onbeveiligde (HTTP) verbinding van de server een webpagina ontvangt kan dit door een hacker worden

  1. meegelezen. Misschien is er een onderwerp dat je graag voor jezelf houdt of vul je een contactformulier in dat om jou n.a.w. gegevens vraagt of erger een online betaling.
  2. opgevangen en zelfs aangepast naar jou doorsturen. De inhoud van de pagina kan door een hacker real-time worden aangepast waardoor je in de browser andere informatie krijgt te zien dan door de website eigenaar bedoeld was. Bijvoorbeeld het vervangen van het inlogscherm waar je per ongeluk toch op inlogt of een stuk tekst waar een goed advies is vervangen door een verkeerd advies.

Zo’n hacker kan in hetzelfde koffietentje als jij zitten en zo aanvallen op jou uitvoeren. Met HTTPS smaakt die koffie ineens ook een stuk beter (anders had die hacker daar ook nog invloed op ;)).

2.2. Als website bezitter

Jouw website heeft opeens een obscure uitstraling nu er “Niet beveiligd” voor jouw url staat. Hoe zit dat? In 2016 kondigde Google de komst van HTTPS aan en het gebruik van HTTPS werd sindsdien beloond met een hogere search rank score. In Juli 2018, met de komst van Google Chrome versie 68, werden alle websites op HTTP van onderstaande melding voorzien. Ziet die professionele website er opeens een heel stuk minder professioneel uit en dat hoeft niet, want een veilige website kost niks extra. Moderne hosting bedrijven bieden de gratis certificaten  van Let’s Encrypt aan.

Een web verbinding tussen een browser en een website dat niet beveiligd is.

3. Hoe werkt het: HTTP, HTTPS, certificaten en HSTS

3.1. HTTP

HTTP is een protocol waarmee je een website kunt bezoeken. Het wordt gebruikt tussen de webbrowser en de webserver. Zonder de S (secure) is er tussen de webrowser en de webserver geen veilige verbinding. Dat betekent dat men elke pagina kan inzien wat je aan het lezen bent of als je een contactformulier (of erger, een wachtwoord of betaling) invult anderen kunnen zien wat je hebt ingevuld (zie onderwerp hierboven onder 2.1).

3.2. HTTPS – Certificaat

Bij HTTPS is de S de beveiligingslaag voor HTTP. Voordat de browser een HTTPS verbinding met de webserver opzet vraagt het eerst om het certificaat wat een digitale verklaring is. Dat certificaat wordt gecontroleerd op een aantal kenmerken. Bijvoorbeeld of het domeinnaam in de adresbalk overeenkomt met wat in het certificaat staat en of de geldigheid van het certificaat nog niet verlopen (of ingetrokken) is.

Dit certificaat moet ergens worden gecontroleerd op echtheid. Dit gebeurt bij een “Certificaat Autoriteit” (CA) op het internet. Die CA is van de organisatie waar het certificaat afkomstig is. In elke bekende browser staat een uitgebreide lijst van goedgekeurde CA’s. Er zijn betaalde certificaten, maar sinds april 2016 kun je ook gratis certificaten krijgen.

3.3. HTTPS – TLS, beveiligde verbinding

Met een veilige verbinding zijn alle gegevens tussen de browser en de website onleesbaar en is alle HTTP verkeer versleuteld. Dat gebeurt met TLS waar de browser controle doet op het certificaat (authenticatie) en hierna met cryptografie een versleutelde (met zogenaamde Cipher Suites) verbinding opzet.

4. Wat kun je aan een slechte score doen?

4.1. Internet.nl resultaat onder het kopje HTTP

4.1.1. HTTPS beschikbaar / niet beschikbaar

HTTPS is de standaard. Is dit er niet? Soms lijkt HTTPS er wel te zijn. Je kunt dit controleren door voor je domein “https://” te plaatsen ipv “http://”. (voorbeeld: “https://www.voorbeeld.nl“). Is jouw website dan niet zichtbaar en verschijnt er een melding als hiernaast?

Melding in de browser dat de verbinding niet privé is. In de adresbalk staat een rood driehoek met een pop-up dat de verbinding niet veilig kan worden opgezet. Met andere woorden, het certificaat is niet in orde.

Waarschijnlijk omdat de webserver alleen een certificaat van de hostingprovider heeft, met andere woorden een ander domeinnaam dan jouw domeinnaam.

Oplossing: Neem dan contact op met je hostingprovider om dit op te lossen of kijk of je het in kunt stellen.

4.1.2.  HTTPS doorverwijzing

De website mag niet op zowel http als https zichtbaar zijn. Het beste is om HTTP uit te schakelen, maar een actieve (verplichte) doorverwijzing van HTTP naar HTTPS is ook in orde.

Oplossing 1: Veel hostingproviders geven je de mogelijkheid om het .htaccess bestand aan te passen. Onderstaande code kun je hierin opnemen.

RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301] 

Bron: Daan.onl

Oplossing 2: Neem contact op met je hostingprovider om dit opgelost te krijgen.

4.1.3. HTTP-compressie

Compressie zorgt ervoor dat data kleiner wordt gemaakt op de webserver, waarna de webbrowser de data weer tot originele grootte terugbrengt om het te kunnen gebruiken. Bij grote hoeveelheden data kan dit veel data schelen en het kán ook sneller zijn om de pagina te laden. Omdat HTTP compressie onveilig is, dient dit helaas uit te staan. 

Oplossing: Neem contact op met je hostingprovider om dit op te lossen.

4.1.4. HSTS

Met HSTS beloof je jezelf en je bezoekers dat je alleen HTTPS gebruikt, waardoor de browser bij het volgende bezoek aan jouw website direct naar HTTPS zal gaan. Hiermee voorkom je een aanval die een ‘downgrade’ naar HTTP forceert.

Oplossing 1: Veel hostingproviders geven je de mogelijkheid om het .htaccess bestand aan te passen. Onderstaande code kun je hierin opnemen. Het getal 31536000 is het aantal minuten in een jaar.

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

Bron: owasp.org

De max-age is de tijd (in minuten) dat er alleen een HTTPS verbinding is toegestaan. Je kunt jouw site ook in deze preload lijst van Google Chrome laten opnemen, waar ook FireFox en Safari gebruik van maken. De browsers zullen dan direct met HTTPS met jouw site verbinden.

Oplossing 2: Draait jouw site op WordPress? Dan kan ik de Pro versie van Really Simple SSL aanbevelen. Die zorgt voor een HSTS, maar controleert ook of er afbeeldingen of andere onderdelen per ongeluk op HTTP ingesteld staan en kan dit voor je oplossen.

Oplossing 3: Neem contact op met je hostingprovider om dit op te lossen.

4.2. TLS

TLS is de beveiligde verbinding. Dit onderdeel dient de laatste versie te hebben, in combinatie met een sterke versleuteling (“Cipher suite”).

De voorloper was SSL, maar dat is achterhaald. Hieronder de geschiedenis:

  • SSLv1 – 1994 (nooit publiekelijk uitgebracht)
  • SSLv2 – 1995, maar bleek niet veilig genoeg
  • SSLv3 – 1996, slechte beveiliging
  • TLS v1.0 – 1999 – Onveilig
  • TLS v1.1 – 2006 – Onveilig
  • TLS v1.2 – 2008 – Deze wordt als veilig gezien.
  • TLS v1.3 – 2018 – Deze wordt als veilig gezien.

SSLv3 is een on-officieel (niet door de IETF uitgegeven) protocol dat als een ‘historisch‘ document is vastgelegd (niet om te gebruiken). De opvolger TLS 1.0 dat in 1999 uitkwam is ook verouderd, versie TLS1.2 of beter 1.3 

Oplossing: Neem contact op met je hostingprovider om dit op te lossen.

4.3. Certificaat

Dit is meestal zelf op te lossen, maar wanneer jouw provider dit niet zelf laat doen, dient dit door de hostingprovider te worden opgelost. 

Met Comodo’s SSL Analyzer (SSL blijft hardnekkig, het is TLS) kun  je in het rapport zien wat er mis is met het certificaat, TLS en de kwaliteit van de versleuteling.

Oplossing: Neem contact op met je hostingprovider om dit op te lossen.

Klik op het slotje op de url balk. Op deze afbeelding staat een goedgekeurd certificaat en de melding "Verbinding is beveiligd".
Dit is een httpS certificaat met daarin de gegevens die het certificaat valide maken. Zoals de url van de website, de houdbaarheidsdatum van het certificaat en wie het certificaat heeft uitgegeven.