Cert8.dbに保存されている、iceweasel(firefox)を使用して検証済み(自己署名ではない)S/MIME証明書をダウンロードしました
それから私は使用しました:
certutil -L -d <path_to_folder_that_cert8.db_resides>
証明書を一覧表示するために、certutilから提供された証明書の名前を使用して.p12ファイルを抽出しました。
pk12util -o mycertfile.p12 -n "<name_found_from_certutil>" -d <path_to_folder_that_cert8.db_resides>
問題は、p12が保存されていたPCに対してアクセスを失ったであり、現在は別のPCに対してa cert8.dbコピーしかないことです。したがって、私はcertutil && pk12util
コマンドですが、certutilは次のエラーで失敗します:
certutil: function failed: SEC_ERROR_LEGACY_DATABASE: The certificate/key database is in an old, unsupported format.
私は、同一のカーネルとlibnss3-tools
バージョン(私がp12を正常に抽出した最初のデスクトップのような):
$ uname -a
Linux commander 3.16.0-4-AMD64 #1 SMP Debian 3.16.7-2 (2014-11-06) x86_64 GNU/Linux
libnss3-tools
バージョン:2:3.17.2-1
何かご意見は?
ありがとう
エラーメッセージは非常に不可解です。 certutil -L
を使用してcert8.db
ファイル内の証明書のリストを取得しているときに、同様のエラーが発生しました。
ここで、コマンドが機能しなかった理由を見つけます。
–L
は、フォルダー内のcert8.db
でのみ機能しません。また、他の2つのファイルkey3.db and secmod.db
にも依存しています。したがって、上記の3つのファイルがすべて存在するフォルダでは、-L
はそこでのみ機能します。そして、それが–d
パラメータがフォルダパスを取る理由です。 cert8.db
ファイルではありません。
Firefoxのプロファイルフォルダから一時ディレクトリにcert8.db
をコピーしてcertutilを試しました。
Certuitl -Aは成功したが、-Lが失敗し、成功した-Aコマンドがその一時フォルダーに他の2つのファイルを作成したときに、私はそれに気付きました。
ディレクトリパスにスペースがあるかどうかも確認してください。スペースがあると、同じエラーまたは「不良ファイル形式エラー-古いデータベース形式」などが発生します。特にMac OSでは、フォルダーは"Application Support"
フォルダーにあり、名前にスペースが含まれています。したがって、完全に引用されたパスが必要です。
"/Users/myuser/Library/Application Support/Firefox/Profiles/jii912uh.default"
または\エスケープ文字を追加します。
/Users/myuser/Library/Application\ Support/Firefox/Profiles/jii912uh.default
データベースは長年にわたってフラットファイルからバークレーDBに移行し、3.12ではSQLiteに移行しました。ディレクトリ名の前にsql
を付け、引用符で囲んでスペースを囲みます。
certutil -L -d sql:${HOME}/.pki/nssdb
参考までに、ここに Mozilla NSSロードマップ を示します。
奇妙で紛らわしいことに、このエラーは、アクセスできない場所で証明書データベースを照会しようとしていて、Sudo
を使用しなかった場合にも発生します。
Certutilを正常に実行するには、.mozillaディレクトリ全体を復元する必要がありました。 cert8.dbファイルは、元のディレクトリにある必要があります。