私は次のことを行います:
File tmpDir = com.google.common.io.Files.createTempDir();
tmpDir.deleteOnExit();
// determine command based upon OS
String prefix = "pk12util";
String command = String.format(
"-i %s -d sql:%s -W '' -K ''",
cert.getAbsolutePath(), tmpDir.getAbsolutePath());
// run the command
CommandRunner.run(prefix, command);
CommandRunner は、Java ProcessBuilder のラッパーです。プロセスの作成を処理し、コマンド出力と終了ステータスを返します。
以下は、Java プロセスから実行されるコマンドと、対応する出力です。
pk12util -i a-typ-tls-cert.p12 -d sql:/tmpdirpath -W '' -K ''
pk12util: 関数が失敗しました: セキュリティ ライブラリ: データベースが正しくありません。
Javaプロセスから実行しているコマンドをコピーして貼り付けると、正常に完了します。certdir のアクセス許可を確認しました。解決策が得られない tmpDir で -N を実行しようとしました。誰にも提案はありますか?エラーの pk12util のソース コードを掘り下げようとしましたが、関連するものが見つかりませんでした。