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.