Dag Blog - we love

Dag Blog

Installare un certificato root CA su UBUNTU

root certificate

Quando si utilizzano nella propria azienda o nel proprio homelab certificati self-signed, c'è la necessità di aggiungere nel trust store di una macchina il root CA certificate emesso da una Certification Authority locale, in modo che possa connettere usando il protocolo SSL.

Lo scenario è questo: in una rete locale di un oranizzaizone o del nostro homelab si vuole connettere tutti i dispositivi attraverso il protocollo sicuro SSL. Per fare ciò occorre che una certification aurthority emetta un certifiato root che sarà utilizzato per creare tutti i certificati di ogni macchina o sito.

Distribendo il certificato root a tutti gli utenti, essi potranno avere la sicurezza, durante le connessioni SSL o con lo schema https, che il sito a cui effettuare la richiesta sia veramente attendibile.

Come installare un certificato su UBUNTU 22.04

Innanzi tutto è necessario recuperare il certificato root emesso dalla certification authority. Solitamente i certificati delle più conosciute CA sono già presenti all'interno delle distribuzioni GNU-Linux. Tuttavia per le networks locali vengono generati certificati specifici in modo da aumentarne la sicurezza.

Il certificato non è nient'altro che un file che può avere estensione .pem ovvero .crt (nel nostro esempio lo chiameremo my-root-ca.crt).

Se provassimo a eseguire una richiesta via HTTPS/SSL (utilizzando il comando curl) ad un sito della nostra rete locale senza aver prima installato il certificato, verrebbe restituito il warning che ci avverte della risposta non sicura.

curl -I https://my-homelab.lan
    curl: (60) SSL certificate problem: unable to get local issuer certificate
    More details here: https://curl.se/docs/sslcerts.html

    curl failed to verify the legitimacy of the server and therefore could not
    establish a secure connection to it. To learn more about this situation and
    how to fix it, please visit the web page mentioned above.

Procediamo con l'installazione del certificato, semplicemente copiandolo in un particolare percorso, e lanciando successivamente il comando update-ca-certificates eseguendo l'installazione.

cp my-root-ca.crt /usr/local/share/ca-certificates
update-ca-certificates

    Updating certificates in /etc/ssl/certs...
    1 added, 0 removed; done.
    Running hooks in /etc/ca-certificates/update.d...
    done.

Nel caso il comando non esista, si deve prima installarlo.

apt update
apt install -y ca-certificates

Si può verificare che il certificato sia installato, se lo troviamo elencato nella cartella /etc/ssl/certs/.

Proviamo di nuovo ad eseguire una richiesta all'inidirizzo della rete locale, per notare che ora la risposta viene restituita correttamente.

curl -I https://my-homelab.lan
    HTTP/1.1 200 OK
    Date: Tue, 22 Aug 2023 08:50:52 GMT
    Server: Apache/2.4.29 (Ubuntu)
    Last-Modified: Fri, 06 Nov 2020 13:41:14 GMT
    Content-Length: 873
    Content-Type: text/html

Rimuovere un certificato root.

La rimozione di un certificato avviene con la stessa semplicità. Prima si procede all'eliminazione del file dalla cartella /usr/local/share/ca-certificates/. Successivamente lanciare di nuovo il comando per aggiornare i certificati agiungendo l'opzione --fresh.

rm /usr/local/share/ca-certificates/my-root-ca.crt
update-ca-certificates --fresh