代码之家  ›  专栏  ›  技术社区  ›  D.R.

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

  •  0
  • D.R.  · 技术社区  · 7 年前

    我正在尝试使用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
    

    我找到了 Using custom PKCS11 provider with 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的一部分,我可以通过1)将jar和luna的dll放在\lib\ext目录中来修复jre,并通过在其中添加提供程序来调整java.security文件。不幸的是,jarsigner只是JDK的一部分,在JDK中找不到\lib\ext文件夹,也找不到java.security文件。

    1 回复  |  直到 7 年前
        1
  •  0
  •   James Sperry    7 年前

    尝试将以下内容传递给Jarsigner

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