certutil:函数失败:安全库:错误的数据库

当我使用certutil它会返回这个错误: certutil: function failed: security library: bad database.

例如,我不能列出证书或密钥

我怎样才能解决这个问题?

如果是新系统,您的证书数据库可能不会被初始化。 要解决这个问题,执行:

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

如果要显示来自特定文件夹(例如,存储Firefox的cert8.db文件的文件夹)的证书,则需要指定具有“-d”的文件夹:

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

否则, nss-certutil可能会尝试从~/.netscape文件夹中读取* .db文件,或者像之前的用户提到的那样$HOME/.pki/nssdb文件。

如果数据库已经被初始化,但仍然被破坏,那么它必须重build:

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

检查工作是否正常

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

导入证书

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

另外检查-d目录path(必须指向目录)是否有空格。 随着空间的提供相同的错误或错误的文件格式错误 – 旧的数据库格式等。特别是在Mac的文件夹是在"Application Support" ,其中包含空间。 所以有这个path完全引用:

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

或添加\转义字符。

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

并检查该文件夹是否具有以下文件cert8.db, key3.db and secmob.db.

在我的情况下,我解决了使用这个解决scheme的问题(Windows XP,nss 3.15.1):

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