certutil
を使用していると、次のエラーが返されます:certutil: function failed: security library: bad database.
例えば証明書またはキーを一覧表示できない
どうすれば修正できますか?
新しいシステムの場合、証明書データベースが初期化されていない可能性があります。これを修正するには、以下を実行します。
mkdir -p $HOME/.pki/nssdb
certutil -d $HOME/.pki/nssdb -N
データベースがすでに初期化されているが、まだ破損している場合は、再構築する必要があります。
$ 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
特定のフォルダー(たとえば、Firefoxのcert8.db
ファイルを格納するフォルダー)からの証明書を表示する場合は、「-d」でフォルダーを指定する必要があります。
nss-certutil -d /Users/myuser/Library/Application\ Support/Firefox/Profiles/jii912uh.default -L
それ以外の場合、nss-certutil
は* .dbファイルを~/.netscape
フォルダー、またはおそらく$HOME/.pki/nssdb
から読み取ろうとする可能性があります。
また、-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.
私の場合、私はこのソリューションを使用して問題を解決しました(Windows XP、nss 3.15.1):
cd /dir/with/database
C:/full/path/to/certutil.exe -L -d .