jarsigner问题与jre/lib/ext删除

Saa*_*eer 5 java jarsigner java-9

根据这篇文章:https://blogs.oracle.com/java-platform-group/planning-safe-removal-of-under-used-endorsed-extension-directories

Java 9中删除了jre/lib/ext.

我的问题是我使用Jarsigner,在以前的Java版本中,我在jre/lib/ext文件夹中找到了我的提供者jar.

jarsigner -tsa timestamp.digicert.com -verbose -keystore NONE -storetype PKCS11 
      -storepass null -providername <MY_PROVIDER_NAME> <JAR_FILE> <CERTIFICATE_NAME> 
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

Saa*_*eer 1

我终于成功解决了这个问题,基于https://docs.oracle.com/javase/9​​/security/howtoimplaprovider.htm#JSSEC-GUID-7C304A79-6D0B-438B-A02E-51648C909876

\n\n

需要执行以下操作(仅指定 Java9 的新增内容):

\n\n

按照步骤 4 添加模块声明:

\n\n
module com.foo.MyProvider {\n    provides java.security.Provider with p.MyProvider;\n    requires java.security.jgss;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

运行 Jarsigner 时,使用 module\xe2\x80\x93path 运行:

\n\n
jarsigner -J--module-path -J<PATH_TO_PROVIDER_JAR> -J--add-modules -J<MODULE_NAME>\n-tsa timestamp.digicert.com -verbose -keystore NONE -storetype PKCS11 -storepass null -providername <MY_PROVIDER_NAME> <JAR_FILE> <CERTIFICATE_NAME> \n
Run Code Online (Sandbox Code Playgroud)\n