Molto spesso durante lo sviluppo di applicazioni web è necessario riprodurre all'interno del proprio PC esattamente lo stesso ambiente che verrà utilizzato poi nel server in produzione. Grazie a Docker è semplice riprodurre in locale la stessa configurazione software utilizzata del server. Tuttavia spesso accade che non si abbia a disposizione un certificato SSL firmato da un autorità valida da sfruttare nell'ambiente locale per cui, provando ad accedere all'applicazione da un browser, si ottiene il messaggio di avviso "la connessione non è privata".
Con questo post voglio spiegarti come aggiungere (o rimuovere) un certificato SSL all'archivio utilizzato da Google Chrome in modo da evitare di ricevere i messaggi di errore dal browser.
NOTA: se utilizzi anche Firefox ricordati di seguire la procedura per aggiungere un certificato anche li.
La connessione non è privata NET:ERR_CERT_AUTHORITY_INVALID
Perché su Linux non basta un doppio click sul file del certificato? #
La risposta alla domanda è molto semplice: quando utilizzi una distribuzione Linux, Google Chrome non utilizza lo stesso archivio di certificati del sistema operativo. Tale scelta da parte degli sviluppatori è stata dettata dal fatto che non esiste un unico software di gestione dei certificati comune a tutto il mondo Linux ma ogni distribuzione implementa un meccanismo differente. A causa di ciò, mentre su Windows e Mac OS X basta aggiungere con un doppio click un certificato all'archivio del sistema operativo affinché venga automaticamente accettato da Chrome su Linux questa procedura non porta ad alcun risultato. Infatti su Linux viene utilizzato come gestore dei certificati la libreria Mozilla Network Security Services (NSS). Di conseguenza, per far riconoscere un certificato a Chrome, è necessario aggiungerlo direttamente all'archivio gestito da questa libreria.
Aggiungere il certificato #
La prima cosa da fare per poter aggiungere un certificato SSL a Google Chrome è installare certutil
. Tramite questo pacchetto è possibile andare ad aggiungere ed a rimuovere i certificati gestiti dalla libreria NSS.
Per installarlo puoi usare il seguente comando da terminale:
sudo apt install libnss3-tools
NOTA: a seconda della versione del sistema operativo questo pacchetto potrebbe essere già incluso all'interno della distribuzione in uso.
Una volta che il pacchetto è stato installato all'interno del sistema, per aggiungere un certificato (con estensione .crt
) all'archivio dei certificati puoi utilizzare il seguente comando (ricordandoti di rimpiazzare il placeholder_<FILE_CRT>
_ con il nome effettivo del tuo certificato):
certutil -d sql:$HOME/.pki/nssdb -A -t "PC,," -n "<CERT_NICKNAME>" -i <FILE_CRT>
NOTA: CERT_NICKNAME
rappresenta l’alias da utilizzare per riconoscere il certificato nella lista di quelli installati
NOTA2: Per sapere cosa significano i trustargs
(la parte dopo il -t
) puoi consultare la documentazione ufficiale.
Per verificare che l'aggiunta del nuovo certificato SSL sia andata a buon fine puoi farti restituire la lista di tutti i certificati aggiunti all'archivio NSS utilizzando il seguente comando:
certutil -d sql:$HOME/.pki/nssdb -L
Se tutto sarà andato a buon fine, riavviando Chrome, non dovresti più ricevere il messaggio d'errore riguardante la connessione non privata.
Rimuovere il certificato #
Nel caso in cui sia necessario rimuovere il certificato il comando da eseguire è:
certutil -d sql:$HOME/.pki/nssdb -D -n <CERT_NICKNAME>
Conclusioni #
Se questo post ti è stato utile puoi farmelo sapere scrivendomi direttamente su Telegram. Inoltre ti invito ad iscriverti al mio canale Telegram e a seguirmi su Twitter per non perderti nemmeno un post del mio blog. A presto!
Fonti: Documentazione Network Security Services Documentazione Chromium