jre/lib/ext在Java 9中删除。
我的问题是我正在使用Jarsigner,在以前的Java版本中,Jarsigner在jre/lib/ext文件夹中找到了我的provider。
jarsigner -tsa timestamp.digicert.com -verbose -keystore NONE -storetype PKCS11
-storepass null -providername <MY_PROVIDER_NAME> <JAR_FILE> <CERTIFICATE_NAME> 我该怎么解决呢?
发布于 2017-12-03 12:35:59
我终于成功地解决了这个问题,基于https://docs.oracle.com/javase/9/security/howtoimplaprovider.htm#JSSEC-GUID-7C304A79-6D0B-438B-A02E-51648C909876
需要执行以下操作(仅指定Java9的新内容):
按照步骤4添加一个模块声明:
module com.foo.MyProvider {
provides java.security.Provider with p.MyProvider;
requires java.security.jgss;
}在运行Jarsigner时,使用模块路径运行:
jarsigner -J--module-path -J<PATH_TO_PROVIDER_JAR> -J--add-modules -J<MODULE_NAME>
-tsa timestamp.digicert.com -verbose -keystore NONE -storetype PKCS11 -storepass null -providername <MY_PROVIDER_NAME> <JAR_FILE> <CERTIFICATE_NAME> 发布于 2017-11-23 02:05:37
对已安装的JDK/JRE映像的更改带来运行时映像,它由目录组成,包括-
conf --包含.properties、.policy和其他类型的文件,供开发人员、部署人员和最终用户编辑。这些文件以前是在lib目录或其子目录中找到的。
java.security文件在JDK9 (位于.../Home/conf/security下)中列出默认提供程序列表中的SunPKCS11提供程序。
security.provider.13=SunPKCS11参考指南下的https://docs.oracle.com/javase/9/security/pkcs11-reference-guide1.htm#JSSEC-GUID-97F1E537-CB59-4C7F-AB6B-05D4DBD69AC0详细介绍了如何添加提供程序,它存在于JDK的jdk.crypto.cryptoki模块中。
因此,理想情况下,不应该需要在Java9中配置Java9提供程序的路径。
添加和示例提供程序如何绑定到模块,从JEP 220:模块化运行时映像到它
安全性-策略文件和CodeSource API的其他用途可以使用jrt来命名特定的模块以授予权限。例如,椭圆曲线密码提供程序现在可以通过jrt URL识别。 jrt:/jdk.cryp.ec 其他模块目前已被授予所有权限,但实际上并不需要它们,这些模块可能会被取消特权,也就是说,给出它们所需的权限。
https://stackoverflow.com/questions/47413076
复制相似问题