Doelgroep: MBO niveau 4 – eerstejaars studenten.
Periode 2, Thema 2 voor Security, Privacy en Ethiek
In dit thema leggen we uit wat nou precies HTTPS, TLS en Certificaten zijn. Het heeft te maken met dat je uiteindelijk de echte site wilt krijgen die je probeert te bereiken van de persoon of bedrijf waarmee je wilt communiceren. Via HTTPS en TLS wordt deze communicatie versleuteld en certificaten laten je weten of de site ook echt daadwerkelijk komt van diegene van wie het bedoeld is.
N.B.: op het einde van dit artikel laat ik ook nog zien hoe ikzelf de hosting, beveiliging en het certificaat van deze website op mijn NAS heb geregeld. Zo laat ik zien dat ik er zelf ook vakinhoudelijke kennis van heb 😉
Stel je voor dat je een brievenbus hebt waarin je geheime berichten verstuurt. Maar de uitdaging is: iedereen kan die brievenbus gebruiken en je wilt niet dat iemand anders je bericht leest of opent. Zo is het ook een beetje met het dataverkeer op je website: hackers kunnen het dataverkeer afluisteren en bekijken wat er allemaal verstuurd wordt. Hier komt asymmetrische encryptie in beeld!
In asymmetrische encryptie heb je twee sleutels: een openbare sleutel en een private sleutel. Denk aan de openbare sleutel als een slot op de brievenbus. Iedereen kan het slot gebruiken om iets in de brievenbus te stoppen, maar alleen de private sleutel (de sleutel die je alleen zelf hebt) kan het slot openen en het bericht eruit halen.
Openbare sleutel (het slot): Deze wordt gebruikt door iedereen die een bericht naar jou wil sturen. Ze stoppen het bericht in de brievenbus, maar kunnen het niet openen.
Private sleutel (de sleutel die jij hebt): Alleen jij hebt deze sleutel. Jij kunt het slot openen en het bericht lezen.
Het coole van dit systeem is dat zelfs als iemand de openbare sleutel heeft (de brievenbus) ze nooit het bericht kunnen lezen zonder de private sleutel (die alleen jij hebt). Dit maakt asymmetrische encryptie superveilig!
Waarom is dit handig?
Stel je voor dat je gevoelige informatie verstuurt, zoals een wachtwoord of persoonlijke gegevens. Je wilt dat alleen de persoon aan de andere kant het kan lezen. Dankzij asymmetrische encryptie kunnen je berichten veilig zijn zelfs als iemand anders de brievenbus ziet!
Wat is HTTP en HTTPS?
HTTP (HyperText Transfer Protocol)
HTTP is de manier waarop gegevens (zoals tekst, afbeeldingen en video’s) tussen een webbrowser (zoals Chrome of Firefox) en een webserver worden verzonden. Wanneer je bijvoorbeeld een website bezoekt, zoals www.example.com gebruikt je browser HTTP om de pagina op te halen van de server waar de website is opgeslagen.
HTTP is echter niet veilig. Iedereen die tussen jou en de server zit (bijvoorbeeld een hacker op een openbaar wifi-netwerk) kan zien wat je doet op de website. Dit is waar HTTPS in beeld komt.
HTTPS (HyperText Transfer Protocol Secure)
HTTPS is simpelweg de veilige versie van HTTP. Het voegt encryptie toe aan de communicatie tussen je browser en de server. Dit betekent dat zelfs als iemand je verbinding probeert af te luisteren ze niet kunnen zien wat er wordt verzonden.
HTTPS is belangrijk voor de veiligheid van gebruikersgegevens, zoals wachtwoorden of creditcardinformatie.
Je ziet de ‘s’ aan het einde van de URL (bijvoorbeeld https://www.example.com). Dit geeft aan dat de verbinding beveiligd is.
Wat is TLS?
TLS (Transport Layer Security)
TLS is de technologie die zorgt voor de versleuteling van gegevens wanneer HTTPS wordt gebruikt. Het zorgt ervoor dat de communicatie tussen je browser en de webserver versleuteld en veilig is, zodat niemand anders je gegevens kan lezen.
TLS is de opvolger van een oudere technologie genaamd SSL (Secure Sockets Layer). SSL wordt nu als verouderd beschouwd, maar de term wordt soms nog steeds gebruikt in plaats van TLS.
Wanneer je een website bezoekt die HTTPS gebruikt betekent dit eigenlijk dat TLS de communicatie versleutelt, zodat je gegevens privé blijven.
Certificaten: Waarom zijn ze belangrijk?
Wat is een SSL/TLS-certificaat?
Een SSL/TLS-certificaat is een digitaal document dat bewijst dat een website veilig is en bevestigt dat de server is wie hij zegt dat hij is. Het certificaat zorgt ervoor dat je vertrouwt op de website waarmee je verbinding maakt.
Hoe werkt een certificaat? Wanneer je naar een website gaat met HTTPS, vraagt je browser het certificaat van de server om te controleren of het een vertrouwde verbinding is. Als alles klopt wordt een veilige, versleutelde verbinding tot stand gebracht.
Hoe weet je of een website veilig is?
Je kunt vaak zien of een website HTTPS gebruikt door naar de URL in je browser te kijken. Een groen hangslot voor de URL is een visuele aanwijzing dat de website een geldig certificaat heeft en veilig is.
Waarom HTTPS en TLS belangrijk zijn voor softwareontwikkelaars
Als softwareontwikkelaar moet je begrijpen waarom beveiligde verbindingen zo belangrijk zijn. Je zult vaak werken met webapplicaties die gegevens van gebruikers verwerken. Het is cruciaal om deze gegevens te beschermen tegen hackers.
Gebruik altijd HTTPS: Zorg ervoor dat je webapplicaties altijd HTTPS gebruiken vooral als ze gebruikersgegevens verwerken.
Controleer certificaten: Als je werkt met API’s of externe servers zorg ervoor dat de verbindingen veilig zijn en dat de certificaten geldig zijn.
Voorbeelden die je moet voorkomen
- Geen HTTPS betekent onbeschermde gegevens
Voorbeeld: Stel je voor dat je een webshop maakt en je klanten moeten hun creditcardinformatie invoeren. Als je geen HTTPS gebruikt kunnen hackers de informatie die je klant invoert makkelijk zien. Dit kan leiden tot verlies van klantvertrouwen en zelfs juridische problemen. Ethische stuk: Als ontwikkelaar moet je ervoor zorgen dat de gegevens van je gebruikers veilig zijn. Het is jouw verantwoordelijkheid om te zorgen dat je website veilig is en dat niemand anders de gegevens kan stelen.
2. TLS en bescherming van persoonlijke gegevens
Voorbeeld: Je werkt aan een platform waar mensen hun adres en medische gegevens invoeren. Als je TLS niet gebruikt kunnen die gegevens makkelijk worden afgeluisterd door hackers. Met TLS is alles versleuteld en kan niemand anders je gegevens lezen. Ethische stuk: Als ontwikkelaar ben je verantwoordelijk voor het beschermen van persoonlijke gegevens van gebruikers. Het is jouw taak om ervoor te zorgen dat deze informatie veilig is en niet gestolen kan worden.
3. Certificaten en vertrouwen in je platform
Voorbeeld: Stel dat je een website maakt waar mensen hun wachtwoorden invoeren. Als de website geen geldig certificaat heeft zullen mensen niet inloggen, omdat ze zien dat de verbinding onveilig is. Dit zorgt ervoor dat je gebruikers geen vertrouwen meer hebben in je platform. Ethisch: als ontwikkelaar moet je ervoor zorgen dat gebruikers je website vertrouwen. Veiligheidsmaatregelen zoals een geldig certificaat zorgen ervoor dat gebruikers zich veilig voelen en hun gegevens willen delen.
4. Verantwoordelijkheid bij datalekken
Voorbeeld: Je werkt voor een bedrijf waar mensen hun gezondheidsinformatie invullen. Als je geen HTTPS gebruikt kan een hacker die informatie stelen. Als dit later ontdekt wordt kan het bedrijf een boete krijgen en veel klanten verliezen. Ethisch: ook hier geldt: jij hebt de verantwoordelijkheid om ervoor te zorgen dat de gegevens van de gebruikers veilig zijn. Wat als jij die gegevens niet goed beschermt? De gevolgen kunnen groot zijn, zowel voor de gebruikers als voor het bedrijf.
5. Gebrek aan certificaat zorgt voor wantrouwen
Voorbeeld: Je maakt een website waar mensen hun e-mailadressen invoeren voor een nieuwsbrief. Als je geen certificaat hebt krijg je een waarschuwing in de browser en willen gebruikers geen gegevens invoeren. Ze willen hun gegevens niet zomaar delen als ze niet zeker weten dat ze veilig zijn. Ethisch: als ontwikkelaar ben je verantwoordelijk voor het vertrouwen van je gebruikers. Het weglaten van beveiliging zorgt ervoor dat gebruikers zich niet veilig voelen en minder snel hun gegevens geven.
Van HTTP naar HTTPS: een heldere handleiding
Bron: https://www.samonlinemarketing.nl/blog/http-vs-https-waarom-wel-en-waarom-niet/
Overstappen van HTTP naar HTTPS hoeft niet ingewikkeld te zijn. Met de juiste stappen en een beetje achtergrondkennis maak je jouw website snel veiliger. In deze uitleg nemen we je mee door het hele proces.
Stap 1: Zorg voor een SSL-certificaat
Een SSL-certificaat is nodig om HTTPS mogelijk te maken. Dit certificaat versleutelt de communicatie tussen jouw website en de bezoeker, zodat gegevens niet zomaar onderschept kunnen worden.
Wat voor certificaat heb je nodig?
- Gratis certificaat: Bijvoorbeeld van Let’s Encrypt. Geschikt voor blogs, kleine websites en testomgevingen.
- Betaald certificaat: Biedt meer garanties en validatie (zoals bedrijfsgegevens). Handig voor webshops of grote platforms.
Hoe regel je een certificaat?
- Bij de meeste hostingproviders kun je een gratis certificaat met één klik activeren via het controlepaneel.
- Voor een betaald certificaat kun je terecht bij aanbieders zoals DigiCert of Sectigo.
- Ik heb zelf een Synology NAS waar je heel gemakkelijk via het systeem een certificaat bij Let’s Encrypt kunt aanvragen voor je eigen kleinere sites.
- Vraag je provider of website-host om hulp als je twijfelt.
Stap 2: Installeer het certificaat
Op shared hosting: Log in op je hostingdashboard (zoals DirectAdmin of cPanel) en activeer het SSL-certificaat.
Op een eigen server: Je moet het certificaat handmatig installeren. Dit doe je met bestanden die je van je SSL-aanbieder krijgt. Volg hun instructies zorgvuldig.
Controle: Gebruik een tool zoals SSL Labs Test om te checken of alles goed werkt.
Stap 3: Zet je website om naar HTTPS
Je website gebruikt nu een certificaat, maar dat betekent nog niet dat alles via HTTPS gaat. Je moet ook je website zelf aanpassen.
Waar moet je op letten?
- Interne links: Zorg dat alle menu’s en knoppen beginnen met https://
- Afbeeldingen en scripts: Ook deze moeten via HTTPS worden geladen, anders krijg je ‘mixed content’-waarschuwingen.
- Externe bronnen: Denk aan Google Fonts, YouTube, API’s — ook die moeten HTTPS gebruiken.
Hulpmiddelen:
- Gebruik voor WordPress bijvoorbeeld de plugin Really Simple SSL.
- Test je site met Why No Padlock of de browserconsole (F12) op mixed content.
Stap 4: Stel een 301-redirect in
Een 301-redirect zorgt ervoor dat iedereen automatisch naar de veilige versie van je site wordt geleid — ook als ze http:// typen.
Zo stel je dit in:
Open je .htaccess bestand (vaak in de hoofdmap van je site) en voeg dit toe:
apacheCopyRewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Wat doet dit?
Elke bezoeker wordt automatisch doorgestuurd naar de beveiligde versie van je site.
Stap 5: Controleer alles
Tot slot test je of alles goed werkt.
Checklist:
- Geen mixed content meer? Gebruik browsertools of online scanners.
- Werken je formulieren, inlogpagina’s en betaalmodules nog?
- Hoe is de snelheid? Soms is HTTPS zelfs sneller. Je kan dit controleren met Google PageSpeed Insights.
Hoe implementeer je HTTPS als softwareontwikkelaar?
De systeembeheerder of domeinbeheerder is normaal gesproken verantwoordelijk voor het instellen van HTTPS op een server door middel van een SSL/TLS-certificaat. Het verkrijgen van een certificaat van een vertrouwde “certificeringsinstantie (CA)” en het installeren ervan op de server hoort bij hun taken.
Maar als softwareontwikkelaar ben jij verantwoordelijk dat je ervoor moet zorgen dat je webapplicatie en de code die je schrijft goed samenwerken met de HTTPS-configuratie die de systeembeheerder heeft ingesteld.
HSTS (HTTP Strict Transport Security):
Je kunt HSTS instellen in de serverconfiguratie om ervoor te zorgen dat alle verbindingen naar je site altijd via HTTPS gaan zelfs als de gebruiker een HTTP-URL invoert. HSTS zorgt ervoor dat de browser automatisch de HTTPS-versie van je website probeert.
Voorbeeld (via HTTP-header):
Strict-Transport-Security: max-age=31536000; includeSubDomains
Dit betekent dat browsers voor een jaar (31536000 seconden) verplicht zijn om altijd HTTPS te gebruiken voor je domein en subdomeinen.
Zorg dat je website altijd HTTPS gebruikt:
Dit kan in je code worden afgedwongen door een redirect van HTTP naar HTTPS in de serverconfiguratie of via een stukje code binnen je applicatie.
Voorbeeld (in PHP):
if ($_SERVER[‘HTTPS’] != “on”) { header(“Location: https://” . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’]); exit(); }
Dit zorgt ervoor dat bezoekers altijd via HTTPS de website bezoeken.
Gebruik ‘secure’ en ‘ HttpOnly’ attributen voor cookies:
Als je cookies gebruikt om sessies te beheren zorg dan dat ze alleen via HTTPS verzonden worden en dat ze niet toegankelijk zijn via JavaScript (bescherming tegen XSS-aanvallen).
Voorbeeld (in PHP):
setcookie(“user_session”, “value”, [ ‘expires’ => time() + 3600, ‘path’ => ‘/’, ‘secure’ => true, // Alleen via HTTPS ‘httponly’ => true // Niet toegankelijk via JavaScript ]);
Veilige verbindingen met API’s:
Wanneer je met externe API’s werkt moet je altijd HTTPS gebruiken om te zorgen dat de gegevens die je verstuurt en ontvangt veilig zijn.
Voorbeeld (in JavaScript):
fetch(“https://api.example.com/data”, { method: “GET”, headers: { “Authorization”: “Bearer your_token” } }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.log(error));
Dit zorgt ervoor dat de communicatie met de API versleuteld is en je geen gevoelige informatie in platte tekst verzend.
Stap voor stap de security-instellingen door van deze website op mijn Synology NAS
Misschien ook nog leuk om te zien hoe ik de beveiliging via HTTPS, SSL/TLS en een certificaat zelf heb ingesteld op mijn eigen NAS voor deze website waar je nu zelf op zit. Ik gebruik een Synology NAS en heb deze domeinnaam geregistreerd. Hoe ik dat vervolgens allemaal heb ingesteld leg ik uit in de volgende YouTube video:
Conclusie
In dit artikel hebben we besproken hoe HTTP, HTTPS, TLS en certificaten samenwerken om de communicatie op internet veilig te maken. Als softwareontwikkelaar moet je deze technologieën begrijpen om gebruikersgegevens te beschermen en veilige webapplicaties te bouwen.
Reflectie en mijn visie: Als je werkt met websites of applicaties die gevoelige gegevens verwerken moet je altijd HTTPS en TLS gebruiken om de communicatie tussen je gebruikers en je servers te versleutelen en te beveiligen. Vaak moet degene die verantwoordelijk is voor de domeinnaam en de server dit allemaal instellen en heeft een software ontwikkelaar andere taken, maar al met al gaat dit toch hand-in-hand samen. Je kunt in je code bijvoorbeeld functionaliteit toepassen om ervoor te zorgen dat er alsnog gecheckt wordt of de serverinstellingen goed staan en het een en ander qua beveiliging forceren. In ieder geval draag je ook als software ontwikkelaar de verantwoordelijkheid om ervoor te zorgen dat al het dataverkeer (inclusief gevoelige informatie) via een veilige weg aan de gebruiker wordt getoond en verzameld. Dat kun je altijd in het ontwikkelingsteam met elkaar controleren.
Bronnen
Simply Explained. (2018, 9 juni). Asymmetric Encryption – Simply explained [Video]. YouTube. https://www.youtube.com/watch?v=AQDCe585Lnc
PowerCert Animated Videos. (2018, 3 mei). SSL, TLS, HTTPS Explained [Video]. YouTube. https://www.youtube.com/watch?v=j9QmMEWmcfo
Network Direction. (2020, 1 december). What is SSL & TLS ? What is HTTPS ? What is an SSL VPN? – Practical TLS [Video]. YouTube. https://www.youtube.com/watch?v=HMoFvRK4HUo
SSL Dragon. (2020, 3 maart). SSL Certificate Explained [Video]. YouTube. https://www.youtube.com/watch?v=SJJmoDZ3il8
SAM Online Marketing. (z.d.). HTTP vs. HTTPS: waarom wel en waarom niet? https://www.samonlinemarketing.nl/blog/http-vs-https-waarom-wel-en-waarom-niet/


Leave a Reply to J. Cancel reply