我执行以下操作:
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-typical-tls-cert.p12 -d sql:/tmpdirpath -W '' -K ''
pk12util:功能失败:安全库:数据库错误。
当我复制并粘贴从 java 进程运行的命令时,它成功完成。我验证了对 certdir 的权限。我什至尝试在 tmpDir 上运行 -N ,但没有产生任何分辨率。有人有什么建议吗?我试图通过 pk12util 的源代码挖掘错误,但找不到任何相关内容。