certutil: échec de la fonction: bibliothèque de sécurité: base de données incorrecte


10

quand je l'utilise certutilretourne cette erreur:certutil: function failed: security library: bad database.

par exemple, je ne peux pas lister les certificats ou les clés

Comment puis-je réparer cela?

Réponses:


23

S'il s'agit d'un nouveau système, votre base de données de certificats peut ne pas être initialisée. Pour résoudre ce problème, effectuez:

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

2
Si vous ne voulez pas de mot de passe dans la base de données de certificats, ajoutez le --empty-passwordcommutateur à la fin de la certutilcommande.
Ben Johnson

J'ai trouvé que si je courais à la place: certutil -d sql:$HOME/.pki/nssdb -Lcela n'entraînerait pas cette erreur. Mais si je courais, certutil -Lcela montrerait cette erreur. Est-ce à dire que la base de données n'est pas corrompue, mais il y a une incompatibilité ou certutil attend-il le mauvais répertoire?
CMCDragonkai

3

Dans le cas où la base de données a déjà été initialisée, mais est toujours corrompue, elle doit être reconstruite:

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

Vérifiez si cela fonctionne bien

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

Certificat d'importation

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

Depuis la dernière mise à jour de libGNUTLS sur Debian, mes navigateurs (chrome et iceweasel) n'ont pas pu s'ouvrir. Sur console, j'ai eu [5284:5310:0306/110217:ERROR:nss_util.cc(750)] After loading Root Certs, loaded==false: NSS error code: -8018et aucun moyen de résoudre ce problème avec élégance. La reconstruction de la base de données l'a résolu pour moi! Merci beaucoup :)
pid

J'ai pu reconstruire la base de données et répertorier les certificats après cela, mais mon importation échoue toujours avec l'erreur: certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database.Ma commande d'importation est certutil -d sql:$HOME/.pki/nssb -A -t "CT,C,C" -n sophos -i ~/Downloads/sophos_cert.crtCela ne devrait pas avoir à être exécuté en tant que root, n'est-ce pas?
Gillfish

2

Si vous souhaitez afficher les certifications d'un dossier spécifique (par exemple, le dossier qui stocke le cert8.dbfichier pour Firefox), vous devez spécifier le dossier avec "-d":

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

Sinon, nss-certutilessayez de lire les fichiers * .db à partir du ~/.netscapedossier, ou peut-être $HOME/.pki/nssdbcomme l'utilisateur précédent l'a mentionné.


1

Vérifiez également que le -dchemin du répertoire (doit pointer vers le répertoire) a de l'espace ou non. Avec de l'espace, il donne la même erreur ou une mauvaise erreur de format de fichier - ancien format de base de données, etc. Particulièrement sous Mac, le dossier "Application Support"contient de l'espace. Ayez donc le chemin entièrement cité:

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

ou ajoutez le caractère \ escape.

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

Et vérifiez que le dossier contient les fichiers suivants, cert8.db, key3.db and secmob.db.


0

Dans mon cas, j'ai résolu le problème en utilisant cette solution (Windows XP, nss 3.15.1):

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

2
C'est super, mais la question spécifie CentOS.
MadHatter
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.