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?

Zim3r
la source

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
Maciej Małycha
la source
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
Mattijn
la source
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é.

user151182
la source
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.

Karim
la source
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 .
Teemonek
la source
2
C'est super, mais la question spécifie CentOS.
MadHatter