Aggiungi le autorità di certificazione a livello di sistema su Firefox

22

Voglio aggiungere alcune CA radice che non vengono fornite con il firefox predefinito su Ubuntu, ma non so come.

Ho provato ad aggiungerli ai certificati locali con certutil , ma non ha funzionato. Ha incasinato il mio database di certificati.

$ certutil -A -d .mozilla/firefox/kek3dogy.default/ -i /usr/local/share/ca-certificates/FNMT_ACRAIZ.crt -n "Certificado Raiz FNMT" -t "TCu,Cuw,Tuw"

e poi

$ certutil -L -d .mozilla/firefox/kek3dogy.default/

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

Go Daddy Secure Certification Authority                      ,,   
VeriSign Class 3 Secure Server CA - G3                       ,,   
VeriSign Class 3 Extended Validation SSL CA                  ,,   
DigiCert High Assurance CA-3                                 ,,   
GlobalSign Domain Validation CA - G2                         ,,   
GeoTrust SSL CA                                              ,,   
StartCom Class 2 Primary Intermediate Server CA              ,,   
Google Internet Authority                                    ,,   
Certificado Raiz FNMT                                        CT,C,c
USERTrust Legacy Secure Server CA                            ,,   
HP Jetdirect 2B0EAD20                                        ,,   
Akamai Subordinate CA 3                                      ,,   
VeriSign, Inc.                                               ,,   
Thawte SGC CA                                                ,,   
VeriSign Class 3 Secure Server CA - G2                       ,,

Il certificato non verrà visualizzato su Firefox. L'ho provato diverse volte, cancellando anche il profilo, e si è mostrato una volta sull'interfaccia di Firefox, ma completamente vuoto.

Comunque, è solo per un utente, e voglio aggiungerli a livello di sistema. Esiste un database a livello di sistema che posso modificare? Come?

Se non c'è un database a livello di sistema che posso modificare, posso contare su uno script X start (come /etc/X11/Xsession.d/ ones, o uno script chiamato dal sistema di avvio automatico xdg su /etc/xdg/autostart/ ) per modificare il profilo utente a inizio sessione, ma ho bisogno di una soluzione che funzioni. Non riesco nemmeno a caricare i certificati sui profili utente dalla riga di comando ora!

    
posta Jorge Suárez de Lis 18.01.2013 - 11:29

7 risposte

17

Il problema qui è che Firefox non ha una posizione "centrale" dove cerca i certificati. Guarda solo nel profilo corrente. Ecco perché la modifica di /usr/share/ca-certificates o altre directory simili non funzionerà con Firefox. Questo è qualcosa che è stato richiesto per anni; vedi i problemi 620373 , 449498 e 454036 (e probabilmente ce ne sono molti altri).

Quindi ti rimangono solo due tipi di soluzioni: o modifica ciascun profilo o modifica il comportamento di Firefox. So che questo non è quello che stai cercando, ma non ci sono modi perché Firefox guarda solo i profili degli utenti.

Detto questo, la soluzione che sceglierei è l'utilizzo di collegamenti fisici o simbolici, in particolare con i collegamenti fissi. Questa soluzione è sicuramente la più semplice e probabilmente la migliore, anche se non ho abbastanza informazioni per giudicare.

Quello che devi fare è sostanzialmente rimuovere ogni cert8.db e key3.db file per ogni profilo e sostituirli con link al "più completo" cert8.db e key3.db . Se usi hardlink,% originale co_de% e cert8.db non saranno distinguibili da quelli nuovi.

Ricordati di regolare le autorizzazioni in base alle tue esigenze. Molto probabilmente, dovrai key3.db in modo che tutti possano aggiungere / rimuovere un certificato. Se desideri che determinati utenti aggiungano / rimuovano solo determinati utenti, puoi creare un gruppo, assegnare i due database a quel gruppo e assegnare il permesso di chmod a+rw solo al gruppo.

    
risposta data Andrea Corbellini 27.01.2013 - 18:59
14

Il modo più semplice è quello di importare il certificato in un profilo firefox di esempio e quindi copiare il cert8.db negli utenti che si desidera equipaggiare con il certificato.

Prima importa il certificato manualmente nel profilo firefox dell'utente campione. Quindi copia

/home/${USER}/.mozilla/firefox/${randomalphanum}.default/cert8.db

negli utenti firefox-profiles. Questo è tutto. Se vuoi assicurarti che i nuovi utenti ottengano automaticamente il certificato, copia cert8.db in:

/etc/firefox-3.0/profile

Ecco un modo alternativo che non sovrascrive i certificati esistenti: [frammento bash per sistemi Linux]

certificateFile="MyCa.cert.pem"
certificateName="MyCA Name" 
for certDB in $(find  ~/.mozilla* ~/.thunderbird -name "cert8.db")
do
  certDir=$(dirname ${certDB});
  #log "mozilla certificate" "install '${certificateName}' in ${certDir}"
 certutil -A -n "${certificateName}" -t "TCu,Cuw,Tuw" -i ${certificateFile} -d ${certDir}
done

Potresti trovare certutil nel pacchetto libnss3-tools (debian / ubuntu).

Vedi anche: Importazione programmatica del certificato CA

Fonte: Installa il certificato a livello di codice in Mozilla

    
risposta data TomKat 02.11.2013 - 08:55
1

Una delle funzionalità del componente aggiuntivo di CCK Wizard Firefox è l'importazione di certificati CA. Uso questo componente aggiuntivo per creare un componente aggiuntivo personalizzato che include un'azienda CA Cert. Quindi impacchetta l'xpi personalizzato in un file .deb nel repository interno da cui tutte le workstation ottengono gli aggiornamenti.

Procedura guidata CCK

EDIT: per confezionare l'xpi per Ubuntu, devi creare un pacchetto che includa la directory / usr / lib / firefox-addons / extensions / [addon-name @ nomeserver] e decomprimere l'intero contenuto dell'Xpi in questa directory. Ad esempio, se si nomina il proprio addon foobarbaz e il server su cui si è impostato l'aggiornamento da (se si desidera abilitare tale funzione) è intranet.example.com, quindi la directory sarebbe [email protected] Non ho mai abilitato l'aggiornamento automatico, ma invece aggiorno il deb nel repository.

    
risposta data Benjamin Long 04.04.2014 - 17:10
1

Firefox funziona dopo un'installazione pulita. Se il database dei certificati in cert8.db viene eliminato, viene rigenerato all'avvio successivo di Firefox. Ciò suggerisce fortemente che esiste una memoria predefinita di sistema di certificati CA.

Il codice sorgente di Firefox mostra che i certificati CA incorporati sono in effetti codificati in% eseguibile firefox . Risiedono in sicurezza / nss / lib / ckfw / builtins /certdata.txt

Quindi non c'è modo di installare un certificato a livello di sistema. Fai attenzione che il patch del codice sorgente potrebbe causare problemi con i diritti di proprietà intellettuale.

    
risposta data yanychar 21.04.2014 - 16:49
1

Utilizzo un'applicazione di "Virtualizzazione dell'ambiente utente" (UEV) che esegue questa operazione per i miei utenti, ma è possibile farlo con gli script di accesso nei client Windows allo stesso modo. Non invierò tutto il codice per trovare in modo dinamico il percorso% APPDATA% \ Mozilla \ Firefox \% PROFILE%, ma quando lo trovi, puoi importare gli script usando alcuni comandi di base. Sto fondamentalmente leggendo il file profiles.ini di Firefox per determinare il percorso del profilo di Firefox / cert8.db.

Potresti voler utilizzare l'applicazione certutil.exe. link

Puoi eseguire script di accesso per gli utenti che importano automaticamente i certificati attendibili da una posizione centrale in Firefox di tutti gli utenti del sistema.

Ecco il "nucleo" del mio script di importazione di certificati vb:

If Instr(strLine,"Path=Profiles/") Then
  arrLine = Split(strLine, "/")
  strProfile = strAppData & "\Mozilla\Firefox\Profiles\" & arrLine(1)
  strCertDB = strProfile & "\cert8.db"

  'Verify the DB exists, if not move to the next entry
  If objFSO.FileExists(strCertDB) Then
    'Run certutil command on this database
    strCertCommand1 = "\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYCA -t ""CT,C,C"" -d " & strProfile & " -i \SERVERNAME\SHARENAME$\certs\MYCA_Root.cer"

    strCertCommand2 = "\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYSECONDCA -t ""CT,C,C"" -d " & strProfile & " -i \SERVERNAME\SHARENAME$\certs\SecondCA_Root.cer"

    strCertCommand3 = "\SERVERNAME\SHARENAME$\certs\certutil\certutil.exe -A " &_
    "-n MYTHIRDCA -t ""CT,C,C"" -d " & strProfile & " -i \SERVERNAME\SHARENAME$\certs\ThirdCA_Root.cer"

    'Run the import commands for this Firefox profile
    objShell.Run("%comspec% /c " & strCertCommand1),0,TRUE
    objShell.Run("%comspec% /c " & strCertCommand2),0,TRUE
    objShell.Run("%comspec% /c " & strCertCommand3),0,TRUE
    
risposta data Tony Massa 10.03.2015 - 18:19
1

L'ho scoperto per la maggior parte del tempo e, per impostazione predefinita, se non configurato diversamente, Firefox utilizza database di sicurezza legacy (cert8.db, key3.db e secmod.db) ciò significa che sarà necessario utilizzare una riga di comando diversa per iniettare il certificato nel database corretto utilizzato da Firefox. (vedi altro dall'uomo di certutil)

quindi se il tuo sistema usa la base dati predefinita il comando dovrebbe andare così: (dbm)

certutil -A -n "Description Name" -t "CT,C,C" -d dbm:/home/<username>/.mozilla/firefox/<default folder>/ -i certificate.crt

altrimenti dovrebbe essere così: (sql)

certutil -A -n "Description Name" -t "CT,C,C" -d sql:/home/<username>/.mozilla/firefox/<default folder>/ -i certificate.crt

da man certutil:

-d [prefix]directory
Specify the database directory containing the certificate and key
database files.

certutil supports two types of databases: the legacy security databases
(cert8.db, key3.db, and secmod.db) and new SQLite databases (cert9.db,
key4.db, and pkcs11.txt).

NSS recognizes the following prefixes:

·   sql: requests the newer database

·   dbm: requests the legacy database

If no prefix is specified the default type is retrieved from
NSS_DEFAUL
    
risposta data Asaf Magen 29.06.2016 - 17:49
1

Contrariamente a quanto si crede, può ottenere che Firefox guardi i certificati di sistema invece del proprio set hard-coded.

Per fare ciò, vorrai utilizzare un pacchetto chiamato p11-kit . p11-kit fornisce una sostituzione drop-in per libnssckbi.so , la libreria condivisa che contiene il set di certificati hardcoded. La versione di p11-kit legge invece i certificati dall'archivio dei certificati di sistema.

Poiché Firefox viene fornito con la propria versione di libnssckbi.so , dovrai rintracciarlo e sostituirlo invece della versione fornita in libnss3:

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

Successivamente, elimina la directory ~/.pki per consentire a Firefox di aggiornare il suo database dei certificati (provocando l'accesso ai certificati di sistema) al riavvio di Firefox. Nota: questo eliminerà tutti i certificati esistenti nello store, quindi se ne hai uno personalizzato aggiunto manualmente, potresti voler eseguire il backup di tale cartella e quindi reimportarli.

    
risposta data wheeler 15.05.2018 - 20:02

Leggi altre domande sui tag