Lespakket 17 - Project Webserver


Hosten van een website met domein via https

🎯
  • De leerlingen kunnen uitleggen hoe HTTPS en digitale certificaten de veiligheid van webverbindingen waarborgen.
  • De leerlingen kunnen de rol van publieke en privésleutels in asymmetrische encryptie beschrijven en onderscheiden van symmetrische encryptie.
  • De leerlingen kunnen de verschillende types certificaten (DV, OV, EV) en hun toepassingen classificeren.
  • De leerlingen kunnen Let's Encrypt en Certbot installeren en configureren om automatisch HTTPS in te schakelen op een webserver.
  • De leerlingen kunnen het installatieproces van certificaten uitvoeren via de commandoregel met snap en certbot.
  • De leerlingen kunnen de geldigheid van een SSL/TLS-certificaat controleren en analyseren met behulp van browsertools en SSL Labs.
📖
  • Dit lespakket maakt gebruik van de leerstof die jullie gezien hebben in het sleutelboek Computernetwerken 3.0 en de cursus Linux (Yves Van Hal).

Tijdens de HTTPS-handshake vindt een proces plaats waarbij de browser en de server afspraken maken over de beveiliging. Hierbij worden zowel de publieke als de privésleutel gebruikt, maar het uiteindelijke versleutelen van je data gebeurt op een derde manier.

Hier is de stap-voor-stap uitleg van de controle en de versleuteling:

1. De controle (Validatie)

Wanneer je een website opent, stuurt de server zijn digitale certificaat naar je browser. In dit certificaat zit de publieke sleutel van de server.

  • De Check: Je browser controleert of het certificaat is ondertekend door een vertrouwde instantie (de Certificate Authority).
  • De Bevestiging: Als de handtekening klopt en de datum geldig is, weet de browser zeker dat de publieke sleutel echt bij die website hoort.

2. Met welke sleutel wordt er geëncrypteerd?

Dit is een proces in twee fasen:

Fase A: De opstart (Asymmetrische encryptie) In het begin gebruikt de browser de publieke sleutel van de server. De browser bedenkt een tijdelijke, geheime code (de "sessiesleutel") en versleutelt deze met de publieke sleutel van de server.

  • Alleen de server kan dit bericht openen, omdat daar de bijbehorende privésleutel voor nodig is.
  • Nu hebben zowel de browser als de server dezelfde geheime sessiesleutel, zonder dat iemand anders die op het internet heeft kunnen zien.

Fase B: Het dataverkeer (Symmetrische encryptie) Zodra de verbinding tot stand is gekomen, worden de publieke en privésleutel niet meer gebruikt voor de data zelf.

  • Vanaf dat moment wordt alle data (zoals je zoekopdrachten of gegevens) versleuteld met de sessiesleutel.
  • Dit heet symmetrische encryptie. Dit wordt gedaan omdat dit veel sneller is voor de computer dan het werken met de grote publieke en privésleutels.
Publieke en private sleutels
Publiek/private sleutels

Samenvatting van de sleutels:

  • Publieke sleutel: Wordt door de browser gebruikt om de eerste geheime verbinding op te zetten.
  • Privésleutel: Wordt door de server gebruikt om de opzet van de browser te ontcijferen.
  • Sessiesleutel: Wordt door beiden gebruikt om de eigenlijke inhoud van de website en jouw gegevens te versleutelen tijdens je bezoek.

Wist je dat de beveiliging van het internet – zoals jouw WhatsApp-berichtjes of de inlog van TikTok – eigenlijk helemaal geen magie is? Als we het hebben over 'sleutels' en 'encryptie', zijn er achter de schermen natuurlijk geen echte hangslotjes. Het is gewoon een heel slim wiskundetrucje!

Laten we zelf eens de hackers en beveiligers uithangen. Je hebt alleen een rekenmachine (of Google op je telefoon) nodig.

De Spelregels: Klokrekenen

Voor deze truc hebben we drie getallen nodig. We doen alsof we rekenen op een hele rare klok.

  • Het Speelveld (De Klok): We gebruiken een klok van 33 uren. Alles wat we berekenen, delen we aan het eind door 33 en we kijken alleen naar de restwaarde (in de wiskunde heet dit modulair rekenen).
  • De Publieke Sleutel: Het getal 3. Dit is jouw openbare sleutel, je mag hem op je voorhoofd schrijven of in de groepsapp gooien. Iedereen mag deze weten!
  • De Privésleutel: Het getal 7. Dit is jouw ultieme geheim. Deze mag niemand weten behalve jij.

De truc is dat je met deze twee sleutels exact dezelfde wiskunde gaat doen. De formule is simpel:

Laten we twee missies uitvoeren!


Missie 1: Een stiekem bericht sturen (Geheimhouding)

Stel, je vriend Bob wil het geheime getal 2 naar jou sturen. De rest van de klas mag meekijken en meeluisteren, maar ze mogen niet ontdekken dat het bericht '2' is.

Stap 1: Bob verstopt het bericht (met jouw Publieke Sleutel 3) Bob pakt jouw openbare sleutel (3). Hij doet het geheime getal (2) tot de macht 3:

Omdat 8 kleiner is dan onze klok van 33, zijn we direct klaar. Bob roept heel hard "8!" door de klas. Iedereen hoort 8. Bob zelf weet niet hoe hij van 8 weer 2 moet maken met alleen die publieke sleutel.

Stap 2: Jij leest het bericht (met jouw Privésleutel 7) Jij hoort "8". De hackers in de klas snappen er niks van. Jij pakt stiekem jouw geheime privésleutel (7) en doet precies dezelfde wiskunde:

Dat is een flink getal! Nu pakken we onze 'klok van 33' erbij. Je deelt dit getal door 33 en kijkt wat er als rest overblijft. (Typ in Google maar eens 2097152 mod 33 in).

BAM! Je hebt het originele getal 2 weer terug, zonder dat iemand anders het kon raden.


Missie 2: Bewijzen dat jij het écht bent (De Digitale Handtekening)

Soms draait het niet om een geheim, maar wil je bewijzen dat jij degene bent die een bericht heeft gestuurd, en niet een of andere grapjas in de klas die zich voordoet als jou. Dan draaien we de truc gewoon om!

Stap 1: Jij 'ondertekent' een getal (met jouw Privésleutel 7) Je wilt de klas laten weten dat het juiste antwoord op de toetsvraag 2 is. Je gebruikt nu jouw geheime sleutel (7):

We kijken weer naar de klok van 33. Hoeveel blijft er over als we 128 delen door 33? (Oftewel 128 mod 33).

Je schrijft heel groot "29" op het schoolbord.

Stap 2: De klas controleert of jij het was (met jouw Publieke Sleutel 3) De rest van de klas kijkt naar het bord en denkt: "Heeft zij dat echt geschreven, of was het de hacker?" Ze pakken jouw Publieke Sleutel (3) die bij iedereen bekend is, en doen de rekentruc:

Ze delen dit door 33 om de restwaarde te vinden (24389 mod 33):

Er komt perfect weer een logisch getal (2) uit! Omdat ze dit konden openmaken met jouw Publieke Sleutel, weet de hele klas nu 100% zeker dat degene die dit op het bord schreef in het bezit is van jouw Privésleutel. En dat ben jij alleen!


Zo zie je maar: hackers en cybersecurity-experts gebruiken geen toverstokjes, maar gewoon slimme wiskunde die omkeerbaar is.

Soorten certificaten

Er zijn verschillende niveaus van controle en toepassing:

Type certificaat Wat wordt er gecontroleerd? Toepassing
Domain Validated (DV) Alleen of je de eigenaar bent van de domeinnaam. Persoonlijke blogs of kleine sites.
Organization Validated (OV) De eigenaar van het domein én de bedrijfsgegevens. Zakelijke websites.
Extended Validation (EV) Een zeer uitgebreide controle van het bedrijf. Banken en grote webshops.
Certificaten kunnen over één enkel subdomein gaan, of over meerdere subdomeinen. Type certificaat Wat wordt er gecontroleerd? Toepassing
Single Domain Één certificaat voor één specifieke domeinnaam. Kleine websites of single-purpose sites.
Multi-domain (SAN) Meerdere verschillende domeinnamen op één certificaat. Beheerders van diverse websites.
Wildcard Eén certificaat voor een hoofddomein en alle subdomeinen (zoals hulp.site.nl). Bedrijven met veel subdomeinen.

Automatisering van certificaten

Vroeger moesten beheerders certificaten handmatig aanvragen, downloaden en installeren. Dit was tijdrovend en als men de vervaldatum vergat, werd de website onbereikbaar.

Tegenwoordig gebeurt dit bijna altijd automatisch:

  • Automatische vernieuwing: Software controleert zelf of een certificaat bijna verloopt en vervangt het op tijd.
  • API-koppelingen: Systemen praten direct met de uitgever van het certificaat.
  • Efficiëntie: Het verkleint de kans op menselijke fouten en bespaart kosten.

In de vorige les hebben we het gehad over de package manager 'apt'. Voor de installatie van de certbot-software heb je een ander pakket-beheer systeem nodig. Snap is een modern pakketbeheersysteem voor Linux, net zoals apt. Hier zijn de belangrijkste verschillen:

Wat is snap? Snap verpakt applicaties met al hun benodigde onderdelen in één geïsoleerde eenheid, zodat ze overal identiek functioneren.

Waarom gebruiken we het hier? Certbot via snap zorgt ervoor dat de juiste versie draait, ongeacht de onderliggende Ubuntu-versie. Indien er updates zijn, worden deze automatisch geïnstalleerd.

Aspect apt snap
Afhankelijkheden Gedeeld met het systeem Meegeleverd in de container
Updates Handmatig of via cron Automatisch op de achtergrond
Snelheid Sneller opstarten Iets trager door isolatie
Opslagruimte Efficiënter Meer ruimte (duplicatie)
Universeel Specifiek voor Debian/Ubuntu Werkt op veel Linux-distro's
Zekerheid Afhankelijk van versies Gegarandeerd dezelfde versie


  1. Typ: sudo snap install core; sudo snap refresh core
  2. Druk op Enter. Dit commando installeert het snap-systeem.
  3. Wacht tot het proces voltooid is
  4. Typ: sudo snap install --classic certbot
  5. Druk op Enter. Dit commando installeert de certbot software m.b.v. snap.
  6. Wacht tot de installatie voltooid is
  7. Typ: sudo ln -s /snap/bin/certbot /usr/bin/certbot
  8. Druk op Enter. Dit commando zorgt ervoor dat het certbot commando gevonden kan worden wanneer je het intypt in de terminal.
  9. Typ: sudo certbot --apache
  10. Druk op Enter. Dit commando zal het certificaat voor jouw website aanvragen.
  11. Volg de interactieve stappen op het scherm
TXT
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Enter email address or hit Enter to skip.
 (Enter 'c' to cancel): luk.de.reu@sintgregorius.be

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at:
https://letsencrypt.org/documents/LE-SA-v1.6-August-18-2025.pdf
You must agree in order to register with the ACME server. Do you agree?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: y

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing, once your first certificate is successfully issued, to
share your email address with the Electronic Frontier Foundation, a founding
partner of the Let's Encrypt project and the non-profit organization that
develops Certbot? We'd like to send you email about our work encrypting the web,
EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: n
Account registered.
Please enter the domain name(s) you would like on your certificate (comma and/or
space separated) (Enter 'c' to cancel): ldr-sg.paper-tiger.online
Requesting a certificate for ldr-sg.paper-tiger.online

Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/ldr-sg.paper-tiger.online/fullchain.pem
Key is saved at:         /etc/letsencrypt/live/ldr-sg.paper-tiger.online/privkey.pem
This certificate expires on 2026-05-22.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

Deploying certificate
Successfully deployed certificate for ldr-sg.paper-tiger.online to /etc/apache2/sites-available/000-default-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://ldr-sg.paper-tiger.online

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
If you like Certbot, please consider supporting our work by:
 * Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
 * Donating to EFF:                    https://eff.org/donate-le
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Controle van het certificaat

  • Open je website in de browser door https://<jouw volledig domein>/<pad naar je webpagina> in de adresbalk te typen.
  • Controleer of het slotje-icoon verschijnt naast de URL, wat aangeeft dat de verbinding beveiligd is.
  • Klik op het slotje om de certificaatdetails te bekijken en te verifiëren dat het certificaat geldig is.
  • Bekijk de technische details op https://www.ssllabs.com/ssltest. Vul de URL van je website in.
  • Dit geeft je een gedetailleerd rapport van de SSL/TLS-beveiliging en mogelijke verbeteringen.
🧠
  • HTTPS en digitale certificaten waarborgen veiligheid door gegevens te versleutelen en identiteit te controleren via Certificate Authorities.
  • Asymmetrische encryptie gebruikt publieke en privésleutels voor veilige uitwisseling, terwijl symmetrische encryptie (via sessiesleutels) de daadwerkelijke datatransmissie beveiligt.
  • Domain Validated (DV), Organization Validated (OV) en Extended Validation (EV) certificaten verschillen in controlegraad; Single Domain, Multi-domain (SAN) en Wildcard certificaten verschillen in bereik.
  • Let's Encrypt biedt gratis automatische certificaten die via Certbot en snap eenvoudig op een webserver kunnen worden geïnstalleerd en automatisch vernieuwd.
  • Certificaatinstallatie via Certbot volgt een interactief stappenplan en configureert automatische vernieuwing elke 60-90 dagen.
  • SSL/TLS-certificaten kunnen gevalideerd worden via het browserslotje en SSL Labs om geldigheid en beveiligingskwaliteit te controleren.