Aggiunta di un certificato autofirmato alla "lista di fiducia"


88

Ho generato un certificato autofirmato per il mio server di build e vorrei fidarmi a livello globale del certificato sulla mia macchina, poiché ho creato la chiave da solo e sono stanco di vedere gli avvisi.

Sono su Ubuntu 12.04. Come posso prendere il certificato e fidarmi a livello globale in modo che i browser (Google Chrome), le utility CLI (wget, curl) e i linguaggi di programmazione (Python, Java, ecc.) Si fidino della connessione a https://mysite.com senza chiedere domande?


Tutto il TLS dovrebbe essere vettorato tramite OpenSSL, quindi questo è il posto dove cercare la documentazione. In questo caso: gagravarr.org/writing/openssl-certs/… sembra utile.
msw,

Risposte:


88

La semplice risposta a questa domanda è che praticamente ogni applicazione la gestirà in modo diverso.

Anche OpenSSL e GNUTLS (le librerie di elaborazione dei certificati più utilizzate per gestire i certificati firmati) si comportano diversamente nel trattamento dei certificati, il che complica anche la questione. Inoltre, i sistemi operativi utilizzano meccanismi diversi per utilizzare la "CA principale" utilizzata dalla maggior parte dei siti Web.

A parte questo, dando Debian come esempio. Installa il ca-certificatespacchetto:

apt-get install ca-certificates

Copia quindi la metà pubblica del tuo certificato CA non attendibile (quello che usi per firmare il tuo CSR) nella directory del certificato CA (come root):

cp cacert.pem /usr/share/ca-certificates

E farlo per ricostruire la directory con il certificato incluso, eseguire come root:

dpkg-reconfigure ca-certificates

e selezionare l' askopzione, scorrere fino al certificato, contrassegnarlo per l'inclusione e selezionare ok.

La maggior parte dei browser usa il proprio database CA, quindi strumenti come certutildevono essere usati per modificare il loro contenuto (su Debian fornito dal libnss3-toolspacchetto). Ad esempio, con Chrome esegui qualcosa del tipo:

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

Firefox ti consentirà di accedere al certificato su disco, riconoscerlo come un file certificato e quindi importarlo nell'elenco CA principale.

La maggior parte degli altri comandi, come le curlopzioni della riga di comando Take, che è possibile utilizzare per puntare alla propria CA,

 curl --cacert  /path/to/CA/cert.file https://...

o eliminare completamente la convalida SSL

 curl --insecure https://...

Il resto avrà bisogno di un'indagine individuale se il ca-certificatestrucco simile non lo ordina per quella particolare applicazione.


Inoltre, come notato qui , anche l'aggiunta di certificati CA per Java è una questione separata.
Naftuli Kay,

2
Dopo aver copiato il certificato in / usr / share / ca-certificati, non riesco a vederlo dpkg-reconfigure ca-certificatesnell'elenco. Che cosa sto facendo di sbagliato?
Georges Dupéron,

19
@ GeorgesDupéron Mi è successo. L'ho risolto rinominando il certificato da whatever.pema whatever.crt.
Ciao mondo,


2
Cordiali saluti, ho avuto un file cert chiamato .cere che non ha funzionato. Ho dovuto rinominarlo .crtper farlo riconoscere.
Tri Nguyen

54

Approccio non interattivo

Per l'utilizzo in un contesto non interattivo (ad esempio una ricetta dello chef) è possibile utilizzare la seguente sequenza.

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • Testato e funziona su debian 5/6 e Ubuntu 14.04.
  • Per ulteriori informazioni, vedere man update-ca-certificates

Questo metodo è preferito al metodo di @ Drav, poiché /usr/share/è in genere riservato ai file aggiunti dal sistema operativo / apt-get.


4
È meglio copiare i file /usr/local/share/ca-certificates/come menzionato nelle pagine man
o il

3
Cordiali saluti, la A deve essere una .crt, ho scoperto .certche è stata aggiunta ma non ha aiutato
KCD,

6

Su Fedora 23, aggiungere il .pem o .der file /etc/pki/ca-trust/source/anchors/ed eseguire sudo update-ca-trust extract.

Vedi i man update-ca-trustdettagli, ad es. Se usare / etc o / usr.


4

In centos:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract

Quando devo openssl connectspecificare questa cartella / anchors? Ricevo ancora un errore "self signed certs
Janac Meena,

2

Approccio non interattivo (18 ottobre)
per i recenti sistemi basati su Debian

C'è una distinzione tra l'aggiunta di un certificato al negozio dell'host e l'attivazione in modo che le applicazioni li utilizzino davvero. Un certificato esistente nel negozio non è necessariamente utilizzato (anche se devo ammettere che comunque molti pacchetti stanno sbagliando comunque)
Questo può creare confusione quando si imposta un pacchetto che considera /etc/ca-certificate.confe semplicemente rifiuta di usare il proprio certificato anche se ha stato aggiunto senza errori. Dovete dire update-ca-certificatesesplicitamente (non basta copiare ma) attivare il CERT aggiungendolo /etc/ca-certificate.confo /etc/ca-certificate/update.d.

CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
    # notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;

Ora qui diventa confuso in quanto esiste un modo per fidarsi implicitamente di un certificato utilizzando un percorso diverso:

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.