2012-06-15 16:14:17 +0000 2012-06-15 16:14:17 +0000
186
186

Come si aggiunge un'autorità di certificazione (CA) a Ubuntu?

Il mio lavoro ha deciso di emettere una propria autorità di certificazione (CA) per gestire diversi aspetti del nostro lavoro in modo sicuro senza pagare i certificati.

  • Firmare criptograficamente le email
  • Crittografare il contenuto delle email
  • Rendere l'accesso a cose come l'azienda IRC basata su certificati client.
  • Revocare le chiavi degli ex dipendenti automaticamente

Mi hanno inviato un file .pem, e non sono sicuro di come aggiungerlo alla mia installazione di Ubuntu. Le istruzioni inviate erano: “Facendo doppio clic su di esso su un Mac dovrei installarlo.” 

Come devo procedere? Devo fare qualcosa con OpenSSL per creare un file .key, .csr, o .crt?

Risposte (8)

253
253
253
2014-02-19 19:13:09 +0000

Installazione di un CA

Copiare il certificato in formato PEM (il formato che contiene ----BEGIN CERTIFICATE----) in /usr/local/share/ca-certificates e nominarlo con un'estensione di file .crt.

Quindi eseguire sudo update-ca-certificates.

Caveats: Questa installazione riguarda solo i prodotti che utilizzano questo store di certificati. Alcuni prodotti possono utilizzare altri negozi di certificati; se si utilizzano questi prodotti, sarà necessario aggiungere questo certificato CA anche a questi altri negozi di certificati. Firefox Instructions , Chrome Instructions , Java Instructions )

Testing The CA

È possibile verificare se questo ha funzionato cercando il certificato appena aggiunto in /etc/ssl/certs/ca-certificates.crt (che è solo un lungo elenco di tutti i vostri fidati CA concatenati insieme).

Potete anche utilizzare il client di OpenSSL cercando di connettervi ad un server che sapete che sta usando un certificato firmato dalla CA appena installata.

$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
   i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com

... snip lots of output ...

    Key-Arg : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout : 300 (sec)
    Verify return code: 0 (ok)

La prima cosa da cercare è la catena del certificato vicino alla parte superiore dell'output. Questa dovrebbe mostrare il CA come emittente (accanto a i:). Questo vi dice che il server sta presentando un certificato firmato dal CA che state installando.

In secondo luogo, cercate che il verify return code alla fine sia impostato su 0 (ok).

69
69
69
2012-06-15 18:07:40 +0000

man update-ca-certificates :

update-ca-certificates is a program that updates the directory /etc/ssl/certs to hold SSL
certificates and generates ca-certificates.crt, a concatenated single-file list of
certificates.

It reads the file /etc/ca-certificates.conf. Each line gives a pathname of a CA
certificate under /usr/share/ca-certificates that should be trusted. Lines that begin
with "#" are comment lines and thus ignored. Lines that begin with "!" are deselected,
causing the deactivation of the CA certificate in question. Certificates must have a .crt
extension in order to be included by update-ca-certificates.

Furthermore all certificates with a .crt extension found below /usr/local/share/ca-
certificates are also included as implicitly trusted.

Da quanto sopra, dedurrei che il modo preferito per ottenere i file dei certificati locali nel negozio di fiducia è quello di metterli in /usr/local/share/ca-certificates, e poi eseguire update-ca-certificates. Non è necessario toccare direttamente /etc/ssl/certs.

15
15
15
2013-10-10 18:46:49 +0000

Le altre risposte relative a update-ca-certificates sono corrette per le applicazioni che leggono dal negozio di certificati di sistema. Per Chrome e Firefox, e probabilmente anche per altri, il certificato deve essere messo nel nssdb, il backend per la libreria NSS di Mozilla.

Da https://code.google.com/p/chromium/wiki/LinuxCertManagement :

Per esempio, per fidarsi di un certificato CA root per l'emissione di certificati di server SSL, usare

certutil -d sql:$HOME/. pki/nssdb -A -t “C,”, -n <certificate nickname> -i <certificate filename>

Dove <certificate nickname> è arbitrario, e <certificate filename> è il vostro file .pem o .crt.

Altri riferimenti utili:

15
15
15
2014-04-30 13:39:09 +0000

Avevo lo stesso problema, e ho dovuto copiare il file .pem in /usr/local/share/ca-certificates, rinominandolo come .crt. Il file .cer può essere facilmente convertito in .pem, con openssl, per esempio, se non si dispone del .pem.

Dopo aver copiato il file è necessario eseguire sudo update-ca-certificates.

11
11
11
2015-09-02 06:19:09 +0000

Per le build più recenti basate su Debian, potrebbe essere necessario eseguire:

sudo dpkg-reconfigure ca-certificates

NOTA: sudo dpkg-riconfigurare le chiamate ca-certificates ca-certificates internamente

Naturalmente sarà comunque necessario copiare il certificato (.crt file) in /usr/share/ca-certificates prima di fare tutto questo :)

6
6
6
2018-04-10 01:00:50 +0000

Basandosi sulla risposta di dwmw2 risposta , si può effettivamente dire alle applicazioni che usano NSS per la gestione dei certificati di utilizzare il negozio di fiducia del sistema.

libnss3 viene fornito di default con un set di certificati CA di sola lettura (libnssckbi.so), quindi il più delle volte è necessario aggiungerli manualmente al negozio di fiducia dell'utente locale situato in $HOME/.pki/nssdb. p11-kit offre un drop-in sostitutivo di libnssckbi.so che funge da adattatore per i certificati root a livello di sistema installati in /etc/ssl/certs.

Edit:

Sembra che ci siano più versioni di libnssckbi.so là fuori che in libnss3. Di seguito è riportato uno script per trovarle tutte, eseguirne il backup e sostituirle con i link a p11-kit:

sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

** Istruzioni originali:**

Per fare ciò, installare p11-kit e libnss3 (se non sono già installate):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

Quindi eseguire il backup dell'esistente libnssckbi.so fornito da libnss3:

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak
``` ```
sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

Infine, creare il link simbolico:

lrwxrwxrwx 1 root root 49 Apr 9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so
``` &001 


Per confermare che ha funzionato, è possibile eseguire `ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so` e dovrebbe mostrare il link: 


&001 &001 


Ora, se si aggiunge un certificato al negozio CA utilizzando `update-ca-certificates`, tali certificati saranno ora disponibili per le applicazioni che utilizzano NSS (`libnss3`) come Chrome.
3
3
3
2016-12-12 12:36:34 +0000

Come si è detto, varie applicazioni che utilizzano l'NSS hanno un proprio archivio di certificati. Per come stanno le cose su Ubuntu, devi usare manualmente certutil per aggiungere i tuoi CAs per ogni applicazione, per ogni utente.

In altre distribuzioni come Fedora, questo tipo di cose Just Works™ e dovresti presentare un bug contro ogni applicazione che non si fida automaticamente dei CAs che installi con update-ca-trust.

Potete risolvere anche questo problema in Ubuntu installando il pacchetto p11-kit-modules e poi sostituendo il modulo NSS built-in trust roots con p11-kit-trust.so, facendo un link simbolico per esempio da /usr/lib/firefox/libnssckbi.so a /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Poi avrete le trust roots configurate del sistema, non alcune hard-coded. Si noti che Ubuntu spedisce più diverse copie di quella libreria libnssckbi.so con le radici di fiducia codificate, e bisogna sostituirle tutte!

cf. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285

1
1
1
2018-01-02 12:58:09 +0000

Risposta davvero stupida da aggiungere qui, ma avevo passato 2 ore a fare avanti e indietro con i certutils in linux… Ero sicuro che tutto fosse corretto:

hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb

Certificate Nickname Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

anyproxy CT,, 
rootCA CT,, 
myasos CT,,

Ma comunque, nel cromo non funzionava niente. Ho provato di tutto, alla fine….

Restarting Chrome

è stata la chiave del mio successo dopo averlo seguito: Il consiglio di Steven Monday