web-dev-qa-db-ja.com

certutil:関数が失敗しました:セキュリティライブラリ:不正なデータベース

certutilを使用していると、次のエラーが返されます:certutil: function failed: security library: bad database.

例えば証明書またはキーを一覧表示できない

どうすれば修正できますか?

10
Zim3r

新しいシステムの場合、証明書データベースが初期化されていない可能性があります。これを修正するには、以下を実行します。

mkdir -p $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N
23
Maciej Małycha

データベースがすでに初期化されているが、まだ破損している場合は、再構築する必要があります。

$ 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
Mattijn

特定のフォルダー(たとえば、Firefoxのcert8.dbファイルを格納するフォルダー)からの証明書を表示する場合は、「-d」でフォルダーを指定する必要があります。

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

それ以外の場合、nss-certutilは* .dbファイルを~/.netscapeフォルダー、またはおそらく$HOME/.pki/nssdbから読み取ろうとする可能性があります。

2
user151182

また、-dディレクトリパス(ディレクトリを指す必要があります)にスペースがあるかどうか。スペースがあると、同じエラーまたは不正なファイル形式エラーが発生します-古いデータベース形式など。特にMacでは、フォルダーは"Application Support"にはスペースが含まれます。パスを完全に引用してください:

"/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.

1
karim

私の場合、私はこのソリューションを使用して問題を解決しました(Windows XP、nss 3.15.1):

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