certutil: funzione non riuscita: libreria di sicurezza: database errato


10

quando lo sto usando certutilrestituisce questo errore:certutil: function failed: security library: bad database.

ad es. non posso elencare certificati o chiavi

Come posso risolvere questo problema?

Risposte:


23

Se si tratta di un nuovo sistema, il database dei certificati potrebbe non essere inizializzato. Per risolvere questo problema, eseguire:

mkdir -p $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N

2
Se non si desidera una password nel database dei certificati, aggiungere l' --empty-passwordopzione alla fine del certutilcomando.
Ben Johnson,

L'ho scoperto invece se avessi eseguito: certutil -d sql:$HOME/.pki/nssdb -Lnon si sarebbe verificato quell'errore. Ma se avessi appena eseguito certutil -L, avrebbe mostrato quell'errore. Ciò significa che il database non è danneggiato, ma c'è qualche incompatibilità o certutil si aspetta la directory sbagliata?
CMCDragonkai,

3

Nel caso in cui il database sia già stato inizializzato, ma è ancora danneggiato, è necessario ricostruirlo:

$ mv ~/.pki/nssdb ~/.pki/nssdb.corrupted
$ mkdir ~/.pki/nssdb
$ chmod 700 ~/.pki/nssdb
$ certutil -d sql:$HOME/.pki/nssdb -N

Controlla se funziona bene

$ certutil -d sql:$HOME/.pki/nssdb -L
Certificate Nickname                                         Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

Certificato di importazione

$ certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n GoAgent -i ~/programs/goagent/local/CA.crt

Dall'ultimo aggiornamento di libGNUTLS su Debian i miei browser (chrome e iceweasel) non sono stati aperti. Su console ho avuto [5284:5310:0306/110217:ERROR:nss_util.cc(750)] After loading Root Certs, loaded==false: NSS error code: -8018e nessun modo per risolverlo con grazia. La ricostruzione del DB l'ha risolto per me! Grazie mille :)
pid

Sono stato in grado di ricostruire il DB ed elencare i certificati dopo quello, ma la mia importazione non riesce ancora con l'errore: Il certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database.mio comando di importazione è certutil -d sql:$HOME/.pki/nssb -A -t "CT,C,C" -n sophos -i ~/Downloads/sophos_cert.crtQuesto non dovrebbe essere eseguito come root, giusto?
Gillfish,

2

Se si desidera visualizzare le certificazioni da una cartella specifica (ad esempio, la cartella che memorizza il cert8.dbfile per Firefox), è necessario specificare la cartella con "-d":

nss-certutil -d /Users/myuser/Library/Application\ Support/Firefox/Profiles/jii912uh.default -L

Altrimenti, nss-certutilpotrebbe provare a leggere i file * .db dalla ~/.netscapecartella o forse $HOME/.pki/nssdbcome menzionato dall'utente precedente.


1

Controllare anche il -dpercorso della directory (deve puntare alla directory) avere spazio o meno. Con lo spazio dà lo stesso errore o errore di formato file errato - vecchio formato di database ecc. Specialmente in Mac la cartella è in "Application Support"cui contiene spazio. Quindi il percorso è completamente citato:

"/Users/myuser/Library/Application Support/Firefox/Profiles/jii912uh.default"

o aggiungi il carattere \ escape.

 /Users/myuser/Library/Application\ Support/Firefox/Profiles/jii912uh.default

E controlla che la cartella contenga i seguenti file, cert8.db, key3.db and secmob.db.


0

Nel mio caso ho risolto il problema utilizzando questa soluzione (Windows XP, nss 3.15.1):

cd /dir/with/database
C:/full/path/to/certutil.exe -L -d .

2
È fantastico, ma la domanda specifica CentOS.
MadHatter,
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.