11

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 にcert8.db のコピーしかないことです。したがって、コマンドを繰り返しましたcertutil && pk12utilが、certutil は次のエラーで失敗します。

certutil: function failed: SEC_ERROR_LEGACY_DATABASE: The certificate/key database is in an old, unsupported format.

カーネルとlibnss3-toolsバージョンが同じものを含む3台の異なるコンピューターで必死に試しました(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

何かご意見は?

ありがとう

4

4 に答える 4

24

データベースはフラット ファイルから Berkeley DB に移行し、現在は 3.12 の SQLite に移行しています。ディレクトリ名にプレフィックスを付けてsql引用符で囲み、スペースを回避します。

certutil -L -d sql:${HOME}/.pki/nssdb 

参考までに、Mozilla NSS ロードマップを次に示します。

于 2016-05-23T21:37:31.663 に答える
9

エラーメッセージは非常に不可解です。ファイル内certutil -Lの証明書のリストを取得するために使用しているときに、同様のエラーが発生しました。cert8.db

これで、コマンドが機能しなかった理由がわかりました。

は、フォルダ内の–Lのみでは機能しません。cert8.dbまた、他の 2 つのファイルkey3.db and secmod.db. したがって、上記の 3 つのファイルがすべて存在するフォルダーでは、-Lそこでのみ機能します。そのため、–dパラメーターはフォルダー パスを使用します。ファイルではありませんcert8.db

cert8.dbFirefox プロファイル フォルダーから一時ディレクトリにコピーして、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
于 2015-08-25T06:38:42.270 に答える
7

奇妙で紛らわしいことに、このエラーは、アクセス権がなく、.xml を使用していない場所にある証明書データベースにクエリを実行しようとした場合にも発生しますsudo

于 2016-09-06T19:26:38.907 に答える