certutil: Funktion fehlgeschlagen: Sicherheitsbibliothek: fehlerhafte Datenbank

10

Wenn ich es benutze certutil, wird der folgende Fehler zurückgegeben:certutil: function failed: security library: bad database.

zB kann ich keine Zertifikate oder Schlüssel auflisten

Wie kann ich das beheben?

Zim3r
quelle

Antworten:

23

Wenn es sich um ein neues System handelt, wird Ihre Zertifikatdatenbank möglicherweise nicht initialisiert. Um dies zu beheben, führen Sie Folgendes aus:

mkdir -p $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N
Maciej Małycha
quelle
2
Wenn Sie kein Kennwort für die Zertifikatdatenbank möchten, fügen Sie den --empty-passwordSchalter am Ende des certutilBefehls hinzu.
Ben Johnson
Ich fand das, wenn ich stattdessen lief: certutil -d sql:$HOME/.pki/nssdb -Les würde nicht zu diesem Fehler führen. Aber wenn ich nur starte certutil -L, würde es diesen Fehler zeigen. Bedeutet das, dass die Datenbank nicht beschädigt ist, aber eine gewisse Inkompatibilität vorliegt, oder erwartet certutil das falsche Verzeichnis?
CMCDragonkai
3

Falls die Datenbank bereits initialisiert wurde, aber dennoch beschädigt ist, muss sie neu erstellt werden:

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

Überprüfen Sie, ob alles in Ordnung ist

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

Zertifikat importieren

$ certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n GoAgent -i ~/programs/goagent/local/CA.crt
Mattijn
quelle
Seit dem letzten Update von libGNUTLS unter Debian konnten meine Browser (Chrome und iceweasel) nicht geöffnet werden. Auf der Konsole habe ich [5284:5310:0306/110217:ERROR:nss_util.cc(750)] After loading Root Certs, loaded==false: NSS error code: -8018keine Möglichkeit, dies anmutig zu lösen. Der Wiederaufbau der DB hat es für mich gelöst! Vielen Dank :)
pid
Ich konnte die Datenbank neu erstellen und die Zertifikate danach auflisten, aber mein Import schlägt immer noch mit dem Fehler fehl: certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database.Mein Importbefehl lautet certutil -d sql:$HOME/.pki/nssb -A -t "CT,C,C" -n sophos -i ~/Downloads/sophos_cert.crtDies sollte nicht als root ausgeführt werden müssen, oder?
Gillfish
2

Wenn Sie Zertifizierungen aus einem bestimmten Ordner anzeigen möchten (z. B. dem Ordner, in dem die cert8.dbDatei für Firefox gespeichert ist), müssen Sie den Ordner mit "-d" angeben:

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

Andernfalls wird nss-certutilmöglicherweise versucht, * .db-Dateien aus dem ~/.netscapeOrdner oder $HOME/.pki/nssdbwie bereits vom vorherigen Benutzer erwähnt zu lesen .

user151182
quelle
1

Überprüfen Sie auch, ob der -dVerzeichnispfad (muss auf das Verzeichnis zeigen) Leerzeichen enthält oder nicht. Mit Speicherplatz gibt es den gleichen Fehler oder einen fehlerhaften Dateiformatfehler - altes Datenbankformat usw. Speziell auf dem Mac befindet sich der Ordner, in "Application Support"dem Speicherplatz enthalten ist. Lassen Sie den Pfad also vollständig zitieren:

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

oder fügen Sie das Zeichen \ Escape hinzu.

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

Überprüfen Sie, ob der Ordner die folgenden Dateien enthält: cert8.db, key3.db and secmob.db.

Karim
quelle
0

In meinem Fall habe ich das Problem mit dieser Lösung gelöst (Windows XP, NSS 3.15.1):

cd /dir/with/database
C:/full/path/to/certutil.exe -L -d .
Teemonek
quelle
2
Das ist großartig, aber die Frage gibt CentOS an.
MadHatter