Gratis HTTPS beveiliging met Let’s Encrypt

Gisteren had ik al uitgelegd dat ik voortaan alle verkeer naar het ICT en Onderwijs weblog via een beveiligde HTTPS verbinding laat lopen. In de praktijk merk jij daar niets van, de kans dat jij vertrouwelijke gegevens uitwisselt via het weblog hier is heel klein.
Gebruik je overigens WordPress.com voor jouw eigen weblog, dan heb je sowieso al standaard HTTPS beschikbaar!

Een van de redenen om het tot nu toe niet te doen was de (beperkte) aanslag die het gebruik van HTTPS doet op de capaciteit van de server. De tijd zal leren of dat een probleem is.
Een tweede reden was/is dat de certificaten die je nodig hebt om HTTPS te kunnen gebruiken tot nu toe simpel geld kostten. En elk certificaat was gekoppeld aan een domeinnaam. En aangezien ik de nodige domeinnamen in gebruik heb, was het ook een afweging van kosten. Voor de goedkoopste certificaten was ik (in 2015) gemiddeld € 30,- per stuk kwijt voor certificaten met een levensduur van 3 jaar.

Met Let’s Encrypt valt in ieder geval dat kostenaspect weg. En dat is in ieder geval wel heel erg prettig. En in mijn geval, ik maak gebruik van Webmin en Virtualmin voor het beheer van mijn server en dan is het één keer een kwestie van installeren en daarna kan ik per domein heel eenvoudig de certificaten beheren.

Installeren
Het lijkt me niet heel zinvol als ik álle stappen ga herhalen, ze staan hier duidelijk omschreven. Vergeet niet dat de eerste stap dus is om de Let’s Encrypt client te installeren op de server, daarna kun je verder gaan met de setup in Webmin en tot slot kun je in Virtualmin de settings per domein aanpassen.

Ik kreeg de eerste keer bij het aanvragen van een certificate de foutmelding dat “argparse” niet geïnstalleerd was. Die heb ik daarna dus nog toegevoegd via pip install argparse.

De certificaten van Let’s Encrypt zijn niet alleen anders omdat ze gratis zijn, ze zijn ook veel korter “houdbaar”. Geen 3 jaar maar 3 maanden (!). Dat heeft tot gevolg dat je ze regelmatig zult moeten vernieuwen. Nou is dat geen probleem als je bv Virtualmin gebruikt, want het aanvragen/verlengen kan automatisch. De instructie legt daarom uit hoe je de certificaten (bv) elke 2 maanden automatisch kunt laten vernieuwen, ruim voordat ze verlopen dus.

Zorg er ook voor dat je na het aanzetten van HTTPS voor een complexe site, zoals een site met WordPress, je ruim tijd hebt om daarna op zoek te gaan naar alle “fouten”.

Ik heb het nu ook op de activegeek aangezet en daar zorgden de “kaarten” van de fietstochten voor veel problemen. Die worden namelijk opgebouwd met afbeeldingen die van externe sites komen. En die moeten dus dan ook allemaal via https:// worden opgevraagd om te voorkomen dat de pagina niet alsnog deels “onveilig” is.
En net als hier op het weblog was ik niet in staat om álles direct via https:// te laten lopen. Hier op de site kon ik bv de QR-code generator niet omgezet krijgen, op de activegeek website waren het de widgets van weeronline die niet via https:// willen werken. En nou zijn er wel ingewikkelde constructies te verzinnen waarbij ik een soort proxy bouw om dan alsnog die widgets op te vragen (de verbinding tussen mijn server en weeronline.nl is dan niet versleuteld, de verbinding tussen mijn server en jou wél), maar dat is me toch even net wat veel werk voor een weer-widget.

Kortom, de overstap vormt nog best wel een uitdaging.