certutil: fungsi gagal: perpustakaan keamanan: database buruk

10

ketika saya menggunakannya certutilmengembalikan kesalahan ini:certutil: function failed: security library: bad database.

misalnya saya tidak bisa mendaftar sertifikat atau kunci

Bagaimana saya bisa memperbaikinya?

Zim3r
sumber

Jawaban:

23

Jika ini adalah sistem baru, basis data sertifikat Anda mungkin tidak diinisialisasi. Untuk memperbaiki ini, lakukan:

mkdir -p $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N
Maciej Małycha
sumber
2
Jika Anda tidak ingin kata sandi pada basis data sertifikat, tambahkan --empty-passwordperalihan ke akhir certutilperintah.
Ben Johnson
Saya menemukan bahwa jika saya berlari sebagai gantinya: certutil -d sql:$HOME/.pki/nssdb -Litu tidak akan menghasilkan kesalahan itu. Tetapi jika saya hanya menjalankannya certutil -Lakan menunjukkan kesalahan itu. Apakah itu berarti database tidak rusak, tetapi ada beberapa yang tidak kompatibel atau apakah certutil mengharapkan direktori yang salah?
CMCDragonkai
3

Jika database sudah diinisialisasi, tetapi masih rusak maka harus dibangun kembali:

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

Periksa apakah berfungsi dengan baik

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

Sertifikat impor

$ certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n GoAgent -i ~/programs/goagent/local/CA.crt
Mattijn
sumber
Sejak pembaruan terakhir libGNUTLS di Debian, browser saya (chrome dan iceweasel) gagal dibuka. Pada konsol saya dapat [5284:5310:0306/110217:ERROR:nss_util.cc(750)] After loading Root Certs, loaded==false: NSS error code: -8018dan tidak ada cara untuk menyelesaikan ini dengan anggun. Membangun kembali DB telah menyelesaikannya untuk saya! Terima kasih banyak :)
pid
Saya dapat membangun kembali DB dan mendaftar sertifikat setelah itu, tetapi impor saya masih gagal dengan kesalahan: certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database.Perintah impor saya adalah certutil -d sql:$HOME/.pki/nssb -A -t "CT,C,C" -n sophos -i ~/Downloads/sophos_cert.crtIni tidak harus dijalankan sebagai root, bukan?
Gillfish
2

Jika Anda ingin menampilkan sertifikasi dari folder tertentu (misalnya, folder yang menyimpan cert8.dbfile untuk Firefox), Anda perlu menentukan folder dengan "-d":

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

Jika tidak, nss-certutilcoba baca file * .db dari ~/.netscapefolder, atau mungkin $HOME/.pki/nssdbseperti yang disebutkan pengguna sebelumnya.

pengguna151182
sumber
1

Juga periksa -djalur direktori (harus menunjuk ke direktori) apakah ada ruang atau tidak. Dengan spasi ini memberikan kesalahan yang sama atau kesalahan format file yang buruk - format database lama dll. Khususnya di Mac folder "Application Support"yang berisi ruang. Jadi mintalah path sepenuhnya dikutip:

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

atau tambahkan karakter \ escape.

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

Dan periksa apakah folder tersebut memiliki file berikut, cert8.db, key3.db and secmob.db.

karim
sumber
0

Dalam kasus saya, saya memecahkan masalah menggunakan solusi ini (Windows XP, nss 3.15.1):

cd /dir/with/database
C:/full/path/to/certutil.exe -L -d .
Teemonek
sumber
2
Itu bagus, tetapi pertanyaannya menentukan CentOS.
MadHatter