当我使用certutil
它时返回此错误:certutil: function failed: security library: bad database.
例如我无法列出证书或密钥
我怎样才能解决这个问题?
答案1
如果是新系统,您的证书数据库可能未初始化。要解决此问题,请执行:
mkdir -p $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N
答案2
如果数据库已经初始化,但仍然损坏,则必须重建:
$ 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
答案3
如果您想要显示特定文件夹(例如,存储cert8.db
Firefox 文件的文件夹)中的证书,则需要使用“-d”指定该文件夹:
nss-certutil -d /Users/myuser/Library/Application\ Support/Firefox/Profiles/jii912uh.default -L
否则,nss-certutil
可以尝试从文件夹中读取 *.db 文件~/.netscape
,或者可能$HOME/.pki/nssdb
像前面的用户提到的那样。
答案4
这是一个很老的问题,但提到的解决方案对我来说不起作用,因为错误是由不正确的 shell 扩展引起的。
就我而言,我必须用 替换~
,$HOME
例如
certutil -d sql:~/.pki/nssdb -A -t "C,," -n KEY_NAME -i ~/path_to_the_key/key.cert
成为
certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n KEY_NAME -i $HOME/path_to_the_key/key.cert