繁体   English   中英

将自定义安全提供程序与JDK11的jarsigner一起使用

[英]Use custom security provider with JDK11's jarsigner

我正在尝试将自定义安全提供程序与JDK 11的jarsigner应用程序一起使用。 我正在使用以下命令:

 jarsigner -verbose -keystore C:\foo\bar\mykeystore -storetype Luna -tsa http://timestamp.digicert.com C:\foo\bar\sample.jar "mykeyalias" -provider com.safenetinc.luna.provider.LunaProvider

但是,我收到以下错误输出:

jarsigner error: java.lang.Exception: Provider "com.safenetinc.luna.provider.LunaProvider" not found

我发现将自定义PKCS11提供程序与jarsigner结合使用,并尝试使用-J-cp选项,但随后出现错误:

jarsigner error: java.lang.RuntimeException: unable to instantiate keystore class: LUNA not found

使用建议的-J-Djava.ext.dirs=C:\\foo\\bar\\LunaProvider.jar也不起作用,它失败并显示:

-Djava.ext.dirs=C:\foo\bar\LunaProvider.jar is not supported.  Use -classpath instead.

选项-classpath不存在,但是可能引用了我已经尝试过的-cp(请参见上文)。

如何正确地做到这一点?

注意:keytool也是JRE的一部分,我可以通过以下方式修复JRE:1)将JAR和Luna的DLL放在\\ lib \\ ext目录中,并通过在其中添加提供程序来调整java.security文件。 不幸的是,jarsigner只是JDK的一部分,我在JDK中找不到\\ lib \\ ext文件夹,也没有找到java.security文件。

尝试将以下内容传递给jarsigner

-J-cp -J<path to LunaProvider.jar>

我找到了解决方案。 不要使用-provider标志,而是在java.security文件中安全提供程序的开头添加com.safenet.luna.provider.LunaProvider(此顺序在这里确实很重要)。 然后命令

jarsigner -keystore <path to keystore> -storetype Luna -tsa http://timestamp.digicert.com <path to jar> <key label> -certchain <path to certchain> -J-cp -J<path to LunaProvider.jar>

应该管用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM