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


10

私が使用しcertutilているときにこのエラーが返されます:certutil: function failed: security library: bad database.

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

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

回答:


23

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

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

2
証明書データベースにパスワードが必要ない場合--empty-passwordは、certutilコマンドの最後にスイッチを追加します。
ベンジョンソン

代わりに実行した場合certutil -d sql:$HOME/.pki/nssdb -L、そのエラーにはなりません。しかし、実行certutil -Lしただけではそのエラーが表示されます。それはデータベースが破損していないことを意味しますが、いくつかの非互換性があるか、certutilは間違ったディレクトリを予期しますか?
CMCDragonkai

3

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

$ 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

DebianでのlibGNUTLSの最後の更新以降、私のブラウザ(chromeおよびiceweasel)を開くことができませんでした。コンソールでは[5284:5310:0306/110217:ERROR:nss_util.cc(750)] After loading Root Certs, loaded==false: NSS error code: -8018、これを優雅に解決する方法がありませんでした。DBを再構築することで解決しました!どうもありがとうございました:)
pid

その後、DBを再構築して証明書を一覧表示することはできましたが、インポートは引き続き次のエラーで失敗します。certutil: function failed: SEC_ERROR_BAD_DATABASE: security library: bad database.インポートコマンドは次のとおりcertutil -d sql:$HOME/.pki/nssb -A -t "CT,C,C" -n sophos -i ~/Downloads/sophos_cert.crtです。
ギルフィッシュ2015

2

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

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

そうしnss-certutilないと、~/.netscapeフォルダから、または$HOME/.pki/nssdb以前のユーザーが述べたように* .dbファイルを読み取ろうとする可能性があります。


1

また、-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.


0

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

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

2
それは素晴らしいですが、質問はCentOSを指定しています。
MadHatter、2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.