Hoe voeg je vertrouwde rootcertificaten toe aan Linux?

Het hele proces van het toevoegen van een certificaat aan de vertrouwensopslag van je Linux-systeem kan wat ingewikkeld lijken, vooral als je niet gewend bent om met certificaatbestanden of commandoregelopdrachten te werken. De belangrijkste reden om dit te doen is als je fouten tegenkomt, bijvoorbeeld SSL certificate problem: unable to get local issuer certificatebij het openen van een website met curl of een browser, en je weet dat de server een zelfondertekend of intern CA-certificaat gebruikt. Het is nogal lastig, omdat Linux-applicaties afhankelijk zijn van een centrale vertrouwensopslag, maar browsers zoals Chrome en Firefox hun eigen, aparte vertrouwensinstellingen hebben. Zelfs nadat je een certificaat aan de systeemopslag hebt toegevoegd, geven sommige websites dus nog steeds waarschuwingen weer. Deze handleiding beschrijft hoe je die root-CA-certificaten aan de vertrouwensopslag van je Linux-systeem kunt toevoegen en hoe je ervoor zorgt dat browsers ze ook “vertrouwen”.

Hoe installeer je het rootcertificaat in het vertrouwensarchief op Linux?

Wat is er precies aan de hand met het certificaatbestand?

Zorg er eerst voor dat uw certificaat in PEM-formaat is ( .CRT- of .PEM -bestanden).Linux werkt over het algemeen met PEM omdat het gemakkelijk te importeren is en begint met —-BEGIN CERTIFICATE—. Als uw certificaat in DER-formaat (binair) is, moet u het converteren met OpenSSL. Het commando hiervoor op Linux is:

$ openssl x509 -in my_trusted_sub_ca.der -inform der -out my_trusted_sub_ca.cer

Dit levert je een PEM-bestand op dat klaar is om toe te voegen. Hetzelfde geldt als je met veel CA’s te maken hebt; converteer ze dan eerst allemaal. Kopieer daarna je nieuwe certificaten naar de map met vertrouwde certificaten.

Het toevoegen van je CA-rootcertificaten aan Debian-gebaseerde distributies (Ubuntu, Mint, Kali)

Dit is het meest voorkomende scenario. Linux heeft weliswaar een centrale opslagplaats voor certificaten, meestal te vinden op /etc/ssl/certs/, maar voor nieuwe certificaten moet je /usr/local/share/ca-certificates/ gebruiken. Het idee is: kopieer je .crtbestanden daarheen en voer vervolgens de updateopdracht uit. Voer in de terminal het volgende commando uit:

$ sudo cp my_trusted_root_ca.crt /usr/local/share/ca-certificates/
$ sudo update-ca-certificates -v

Even een korte opmerking: als de update-ca-certificatesopdracht een “opdracht niet gevonden” foutmelding geeft, moet je waarschijnlijk eerst het pakket ca-certificates installeren met:

$ sudo apt-get install -y ca-certificates

Zodra dat is gebeurd, zou uw systeem het certificaat moeten herkennen en vertrouwen. U ziet dan een bericht zoals “1 toegevoegd, 0 verwijderd” nadat de update is uitgevoerd. Bij sommige systemen werkt het echter niet altijd even goed; mogelijk is een herstart of opnieuw inloggen nodig om het volledig werkend te krijgen.

Een andere mogelijkheid: CA-certificaten opnieuw configureren.

Als je liever een grafische gebruikersinterface gebruikt of een herconfiguratie uitvoert, kun je het volgende doen:

$ sudo dpkg-reconfigure ca-certificates

Hierdoor verschijnt een dialoogvenster waarmee je vertrouwde CA’s kunt in- of uitschakelen, en de certificaatopslag wordt vernieuwd. Niet helemaal automatisch, maar werkt prima als je meerdere CA-certificaten wilt beheren zonder telkens handmatig bestanden te hoeven kopiëren.

Controleren of uw certificaat vertrouwd is

Om te controleren of Linux uw toegevoegde CA vertrouwt, kunt u het volgende uitvoeren:

$ openssl verify my_trusted_root_ca.crt

Als alles in orde is, ontvang je een OKbericht. Anders krijg je een foutmelding unable to get local issuer certificate. Om te controleren of de sitevertrouwensfunctie werkt, kun je dit testen met curl:

$ curl -I https://yourdomain.local

Kijk of de headerinformatie geen SSL-fouten bevat. Soms geven browsers zelfs na het toevoegen van CA’s nog steeds foutmeldingen, omdat ze de Linux-vertrouwensopslag niet standaard gebruiken. In dat geval moet je de browserspecifieke opslag bijwerken.

Een vertrouwd CA-certificaat toevoegen aan Chrome en Firefox

Omdat browsers de vertrouwensopslag van het systeem vaak negeren, moet je dit handmatig aanpassen. Firefox heeft een eigen certificaatdatabase: cert8.db (oudere versies) of cert9.db (nieuwere versies).Chrome, Chromium en andere op Chromium gebaseerde browsers respecteren de Linux-vertrouwensinstellingen ook niet automatisch.

Installeer voor Firefox de tool certutil uit het pakket libnss3-tools :

$ sudo apt install libnss3-tools

Voer vervolgens dit script uit om uw CA toe te voegen aan de Firefox Store. Vervang my_rusted_root_ca.crten My Root CAdoor uw daadwerkelijke bestand en naam:

#!/bin/bash certfile="my_rusted_root_ca.crt" certname="My Root CA" for certDB in $(find ~/ -name "cert8.db") do certdir=$(dirname ${certDB}) certutil -A -n "${certname}" -t "TCu, Cu, Tu" -i ${certfile} -d dbm:${certdir} done for certDB in $(find ~/ -name "cert9.db") do certdir=$(dirname ${certDB}) certutil -A -n "${certname}" -t "TCu, Cu, Tu" -i ${certfile} -d sql:${certdir} done

Hiermee wordt uw root-CA toegevoegd aan de vertrouwde certificatenopslag van Firefox. Mogelijk moet u Firefox daarna opnieuw opstarten om de wijziging te zien.

Voor Chrome/Chromium is het vergelijkbaar, omdat die ook op NSS gebaseerd zijn. Maar als je een snelle oplossing wilt, is het installeren van het CA-certificaat in de gebruikersvertrouwensarchief meestal voldoende. Houd er wel rekening mee dat handmatig toevoegen wat lastiger is; wees niet verbaasd als je er even mee moet rommelen.

Bij sommige configuraties, vooral als u met bedrijfs- of interne certificaten werkt, is het de moeite waard om zowel de Linux-systeemcertificaten als de browserspecifieke certificaten te controleren om die vervelende SSL-waarschuwingen te voorkomen. En natuurlijk, als u een certificaat later wilt verwijderen, verwijdert u gewoon het betreffende .crtbestand en voert u de update opnieuw uit, of verwijdert u de juiste vermeldingen in de certificaatdatabase.

Samenvatting en een snelle checklist

  • Uw certificaat is indien nodig omgezet naar PEM.
  • Uw CA-certificaat is gekopieerd naar /usr/local/share/ca-certificates/.
  • Het programma is uitgevoerd sudo update-ca-certificatesen de output is gecontroleerd.
  • Geverifieerd vertrouwen met openssl verify.
  • De vertrouwde archieven van de browser worden indien nodig bijgewerkt (via certutil voor Firefox).

Tot slot

Dat kan allemaal wat gedoe zijn, maar als het eenmaal correct is ingesteld, zouden je Linux-systeem en browsers geen SSL-waarschuwingen meer moeten geven voor interne sites of zelfondertekende certificaten. Want eerlijk gezegd, het vermijden van die “niet-vertrouwde certificaat”-fouten maakt het leven een stuk makkelijker bij het werken met ontwikkel- of interne servers. Verwacht wat uitproberen en misschien een herstart, maar als het eenmaal werkt, loopt het meestal soepel. Ik hoop dat dit iemand helpt tijd en frustraties te besparen met SSL-vertrouwensproblemen.