SSL certificaten vervangen

Met de verkorte levensduur van website SSL certificaten, moet je ze dus ook vaker vervangen. En dan moet je toch eens uitzoeken hoe je dat eenvoudiger kan doen. Vanaf 1 september 2020 hebben de grote browsermakers (Google, Apple, Microsoft en Morzilla) afgesproken dat ze een certificaat slechts voor 1 jaar (plus wat overloop) geldig laten zijn, in hun browsers. Dit verplicht iedereen hierin mee te gaan.

Je kan op 2 manieren aan een certificaat komen dat geldig is op het internet. Een kopen via een commerciële organisatie of een gratis certificaat gebruiken (Let’s Encrypt). Er zijn nog een paar aanbieders van gratis certificaten, maar allen hebben ze de beperking dat een certificaat slechts 3 maanden geldig is.

Voor deze publieke website gebruik ik een Let’s Encrypt certificaat. Dat is handig, daar dit ondersteund wordt door mijn hoster en deze het certificaat automatisch vernieuwd. Ik hoef dus geen actie te ondernemen om het certificaat van deze website te vernieuwen.

Maar voor het domein thuis.endert.be is dat anders. Achter deze DNS naam hangen verschillende toepassingen, zoals mijn Synology Nas, mijn raspberry pi, mijn Sophos Firewall, en nog wat andere toepassingen. En ik heb nog niet uitgezocht hoe ik dat allemaal vanuit 1 plaats kan aansturen en het certificaat automatisch op elk van de benodigde apparaten kan krijgen. Het moet mogelijk zijn, maar om dat allemaal uit te zoeken zal ik toch wat tijd voor moeten vrijmaken.

En dus, had ik daarvoor maar een gekocht certificaat. Eerst was dit 5 jaar geldig, dan 2 jaar met bij elke vernieuwing wordt het minder en minder. Het huidige maximum van 398 dagen vereist dus vervanging om het jaar (als je wat overlap wil). Het is nog 4 keer langer als het Let’s Encrypt certificaat, maar ik zal er toch maar eens wat tijd moeten insteken.
Het is wel zo dat met de steeds korter wordende geldigheid, en het gratis zijn van Let’s Encrypt de (basis) SSL Certificaten ook goedkoper worden. Voor +/- €8,- per jaar heb je reeds een certificaat.

De procedure in mijn thuis omgeving.

Om een certificaat aan te kunnen vragen moeten we een ‘CSR’ (Certificate Signing Request) maken. Dit kan op verschillende manieren.

Voor mij is de meest eenvoudige manier dit op een linux/raspberry pi systeem te doen omdat OpenSSL daar reeds is geïnstalleerd. OpenSSL kan ook op Windows worden geïnstalleerd, en er zijn verschillende andere manieren in een Windows om een CSR aan te maken.

openssl req -utf8 -nodes -sha256 -newkey rsa:2048 -keyout server.key -out server.csr

Via bovenstaande commando worden 2 files aangemaakt. Het bestand ‘server.csr’ bevat het CSR waarvan sprake is, en dat je uiteindelijk op de site waar je je certificaat koopt (zoals Sertigo of Xolphin) zal moeten uploaden. Het server.key bestand bevat het ‘private’ gedeelte van je certificaat (de private key), het CSR bevat het ‘publieke’ gedeelte van de sleutel, samen met de extra informatie die je hebt opgegeven. Want, tijdens het maken wordt je naar gegevens gevraagd zoals Land (BE), State (Limburg), Locality (Houthalen), Common Name (De software vraagt hier voor de FQDN of YOUR name. Dit jij niet jou naam, maar de naam van de site of te wel thuis.endert.be)..

Met de inhoud van de CSR kan je aan de slag. Soms moet je dit bestand uploaden, soms moet je de inhoud (wat tekst is) plakken in de website waar je je certificaat koopt.
Na het invullen van de gegevens wordt er altijd op een of andere manier geverifieerd dat jij de eigenaar bent van het betreffende domein (thuis.endert.be). In een meest eenvoudige manier is dit via een mail naar gekende email adressen binnen je domein (admin@endert.be, webadmin@endert.be,…). Maar afhankelijk van het wat je kiest (bv eenvoudig, domein validatie) moet je meer een meer bewijzen dat jij de rechtmatige eigenaar bent van de dns naam. (bijvoorbeeld dat je een bedrijf bent, met het eigenaarschap van de dns naam). Voor persoonlijke doeleinden, is de eenvoudigste manier voor mij voldoende, en dus heb ik voor een eenvoudige mail gekozen.

Bij deze methode komt het resultaat vaak al na enkele minuten binnen. Je kan dan de files downloaden die de verkoper van de certificaten heeft aangemaakt.

Deze certificaten komen in enkele vormen. Meestal zijn deze geschikt voor linux en niet zozeer voor windows. Met een aantal openssl commando’s kan je de missende formaten aanmaken:

  • Een pfcs7 file (.p7b)
    openssl pkcs7 -print_certs -in thuis_endert_be.p7b -out thuis_endert_be.cer
  • Een pkcs12 file (.pfx) (windows)
    openssl pkcs12 -export -in thuis_endert_be.cer -inkey server.key -out thuis_endert_be.pfx
  • Een pem file (.pem) voor de synology nas
    openssl x509 -in thuis_endert_be.cer -out thuis_endert_be.pem

Met al deze bestanden kan ik aan de slag:

  • Installeren op de Nas: hier heb je server.key, thuis_endert_be-fullchain.txt en usertrust_rsa_certification_Authority.crt nodig.
  • Installeren in mijn Windows omgeving
  • Installeren in mijn Linux omgeving
  • Installeren in de Sophos firewall, zodat hij de pakketjes kan inspecteren. (2023: niet meer, is nu pfsense geworden)