Certificaat voor je router of ander apparaat instellen (TLS)

Marco den Teuling
0
(Afbeelding: Thorsten Hübner) © (Afbeelding: Thorsten Hübner)

Gratis ondertekende TLS-certificaten zijn op webservers zeer gangbaar. De gebruikelijke set-upmethode van het populaire Let’s Encrypt werkt echter niet als je probeert een certificaat voor je router, firewalls en webcams via de webinterface toe te voegen. Als alternatief kun je overschakelen op gespecialiseerde webservices.

TLS-certificaten (Transport Layer Security) worden gebruikt om het dataverkeer tussen een webserver en de browser te versleutelen. De webserver kan zich authenticeren met een ondertekend certificaat om te bewijzen dat je echt communiceert met het gewenste domein – bijvoorbeeld router.example.com of jouwbank.nl. Bij veiligheidskritische domeinen zoals die laatste zijn extra stappen nodig.

Bij de veelgebruikte gratis certificaten van Let’s Encrypt moet voor het aanvragen een token op de webserver worden opgeslagen. Er zijn tools zoals certbot die het proces kunnen automatiseren (voor Apache, Nginx en dergelijke).

Certificaat op je router

Op appliances, webcams en andere apparaten die je via een webinterface configureert, kun je geen bestanden in het pad van de webserver plaatsen. Daarom moet je die via DNS (Domain Name System) verifiëren. Daar stuurt Let’s Encrypt een token voor. De domein­eigenaar moet die token bij de verantwoorde­lijke DNS-server voor het betreffende domein opslaan in een apart record (TXT-record). Dat kan Let’s Encrypt dan uitlezen door middel van een DNS-request.

Ook die DNS-verificatie kan worden geautomatiseerd . In principe komen de certificaten dan in een configureerbaar pad te staan, van waaruit je ze handmatig op de router of firewall kunt zetten.

Je kunt je dat werk besparen als je de reverse-proxy Traefik voor je netwerk instelt. Traefik gebruikt wildcard-certificaten voor alle hosts van een domein, dus je hoeft het maar één keer in te stellen voor de firewall, webcam en alle andere apparaten. Sommige systeembeheerders vinden zo’n ‘single point of failure’ in hun netwerk echter niet prettig. En als er bijvoorbeeld meerdere filialen zijn, met elk hun eigen firewalls, dan moet je in elk filiaal Traefik opzetten.

(Aanvullende links bij dit artikel hier, meer over Traefik gebruiken lees je in c’t magazine 7-8/2020

Certificaat aanmaken

Als alternatief kun je gebruikmaken van webservices zoals freessl.org, die ook gratis Let’s-Encrypt-certificaten verstrekken. Daar geef je de hostnaam op (bijv. firewall.example.com) en klik je op ‘Create a free SSL certifi­cate’. Als het certificaat voor meerdere hosts moet gelden, voer de hostnamen dan in gescheiden door komma’s en zonder spaties. De hosts komen in het veld ‘Subject Alternative Name’ (SAN) in het certificaat te staan.

Als je een geldig e-mailadres invoert, zal Let’s Encrypt je er per mail aan herinneren dat het huidige certificaat moet worden verlengd. Maar je krijgt je certificaat ook als je daar een fantasie-mailadres opgeeft.

TLS certificaat SSL FreeSSL router appliance

FreeSSL.org regelt gratis Let’s-Encrypt-certificaten. Zorg ervoor dat de hostnaam correct is en laat het sleuteltype en de verificatie op RSA en DNS staan.

Sleutel genereren

Om ervoor te zorgen dat de voor TLS benodigde privé-sleutel geheim blijft, is het aan te raden om die samen met de publieke sleutel lokaal in je eigen browser te genereren. Klik daarvoor op ‘Browser Create’ en ­Create. Je browser genereert dan automatisch een sleutelpaar van het type RSA met 2048 bitlengte. Het is niet eenvoudig om te controleren of de andere methoden van sleutelgeneratie betrouwbaar zijn. Voor de optie ‘Local Create’ moet bijvoorbeeld een KeyManager van een andere website geïnstalleerd worden. We raden aan de andere methoden te vermijden.

Certificaat laten ondertekenen

Om Let’s Encrypt je certificaat te laten ondertekenen, begint de DNS-verificatie na de sleutelgeneratie. Open daarvoor in een ander browservenster de configuratie van de verantwoordelijke DNS-server voor je domein. Kopieer het TXT-record dat FreeSSL weergeeft en sla het op de DNS-server op. De naam van het TXT-­record volgt het patroon: _acme-challenge.example.com. De token hoort thuis in het corresponderende TXT-veld. Klik op Validation.

Gegevens downloaden

De browser toont vervolgens de private key en de certificaatgegevens (je certificaat en het intermediate-­certificaat van Let’s Encrypt). Alle componenten kunnen als zip-archief worden opgeslagen via ‘Download File’. Dat archief bevat twee bestanden: het certificaat full_chain.pem (dat wordt door de HTTPS-server aan clients geleverd) en de private.key voor de TLS-authenticatie van de server.

Andere opties

Met het commando openssl kun je ook andere sleuteltypes en lengtes genereren. Die hoef je dan alleen nog maar door een Certificate Signing Request (CSR) te laten ondertekenen. Een voorbeeld:

openssl req -newkey rsa:4096 -sha256 -nodes -keyout mijnserver.key -out mijnserver.csr -subj ‘/CN=mijnserver.example.com’ -addext ‘subjectAltName=DNS:mijnserver.example.com’

Het bestand mijnserver.key bevat de private-key. Bewaar die ergens veilig. Een geschikte plek is bijvoorbeeld de wachtwoordmanager KeePass. Het uitvoerbestand mijnserver.csr bevat het ondertekeningsverzoek dat begint met ‘Begin Certificate Request’. Selecteer op de website van FreeSSL de optie ‘I have a CSR’ en kopieer je aanvraag naar het juiste veld. De DNS-verificatie zal dan op dezelfde manier werken als voor de sleutels die door de browser gegenereerd worden.

 


Ontvang meer tips voor beheer van je IT-apparatuur!
Schrijf je in voor de nieuwsbrief:


 

Certificaat importeren

Let’s Encrypt levert de bestanden in het PEM-formaat voor webservers zoals Apache. Sommige apparaten hebben echter één enkel bestand nodig dat zowel het certificaat als de private-key bevat, zoals Fritzbox-routers en de monitoringtool ntopng. De bijpassende bestanden kun je bij elkaar kopiëren met een tekstverwerker of samenvoegen met een commando als cat full_chain.pem private.key >> fritzbox.cert. Laat tot slot de fingerprint weergeven, die je bij een van de volgende stappen nodig hebt:

openssl x509 -noout – fingerprint -sha256 -inform pem -in fritzbox.cert

Bij een Fritzbox upload je het bestand fritzbox.cert in de webinterface via het menu-item ‘Internet / Permit Access / FRITZ!Box Services’. Laat het veld Password leeg, omdat de door de browser gegenereerde privésleutel niet versleuteld is. Na het klikken op Import toont de webinterface onder andere de SHA-1 fingerprint van het certificaat. Die moet overeenkomen met wat eerder door openssl getoond werd, anders heb je vermoedelijk een andere sleutel geïmporteerd dan de bedoeling was.

Voor de ntopng-server zet je het bestand in het pad /usr/share/ntopng/httpdocs/ssl/ met de naam ntopng-cert.pem (admin-wachtwoord vereist). Herstart de applicatie om de wijzigingen te accepteren:

sudo service ntopng stop & sudo service ntopng start

Ander formaat certificaat voor appliance

Sommige appliances vereisen bestanden in het formaat PKCS#12. Die kun je herkennen aan de extensie .p12 of .pfx. Het certificaat en de privésleutel zitten in één bestand en zijn versleuteld met een passphrase. Dat formaat kun je ook met openssl genereren op basis van de private key en het certificaat:

openssl pkcs12 -export -inkey private.key -in full_chain.pem -out mijnserver.p12

Voer een wachtwoord in voor encryptie, daar wordt later bij het importeren naar gevraagd.

Verbinden zonder waarschuwing

Na dat alles zou je browser niet langer moeten klagen over de certificaten van je apparaten als je via HTTPS toegang tot hun webinterfaces wilt krijgen. Door het ontbreken van een automatische update moet je helaas deze procedure na uiterlijk 90 dagen herhalen. Langer is het certificaat niet geldig.

(Informatie afkomstig uit het artikel van Johannes Weber en Noud van Kruysbergen, c’t magazine 11/2020, p. 136)

Lees uitgebreide workshops en achtergrondinfo op je gemak in c't magazine dec/2021

Deel dit artikel

Lees ook

Een smarthome opzetten met ESPHome en Home Assistant

We laten zien hoe je de gratis Home Assistant software samen met ESPHome gebruikt voor een smarthome opzetten en centraal aansturen.

Chrome OS alternatief CloudReady installeren: gratis Chromebook

Je kunt Cloudready installeren als gratis alternatief voor Chrome OS.  Maak je eigen Chromebook van een oude laptop. Zo werkt het.

Interessant voor jou

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er