java.lang.SecurityException:pipe辖区域策略文件不是由可信签名人签名的

在处理不同的问题(与RMI有关)时,我使用“无限强度”策略文件升级了系统的“安全文件夹”,现在我的应用程序以不同的方式失败。 我得到一个很长的堆栈转储,其中以下位显示相关:

Exception in thread "main" java.lang.ExceptionInInitializerError [...crop...] Caused by: java.lang.SecurityException: Can not initialize cryptographic mechanism at javax.crypto.JceSecurity.<clinit>(JceSecurity.java:86) ... 17 more Caused by: java.lang.SecurityException: The jurisdiction policy files are not signed by a trusted signer! [...crop...] 

恩,跆拳道? 唯一的改变是我把原始的jar文件放在一边,并在$ JAVA_HOME / lib / security中添加了无限的jar文件。 那个目录现在看起来像这样:

 $ ls blacklist javaws.policy trusted.libraries cacerts local_policy.jar US_export_policy.jar java.policy local_policy.jar.strong US_export_policy.jar.strong java.security local_policy.jar.unlimited US_export_policy.jar.unlimited 

当然,.strong和.unlimited版本在那里,所以我可以快速切换回来。

方向很简短,看起来他们只是想象replace这两个文件(local_policy.jar和US_exportpolicy.jar)。

还需要做什么?

请注意,Java和策略文件的版本是迄今为止最年轻的版本:1.7.0_03和jce_policy-6。

谢谢。

PS在这里find的类似标题的文章根本没有任何帮助。

您应该使用Java 7的策略文件,而不是混合运行时和策略文件版本。

Java版本与策略文件的版本不匹配时会发生这种情况。 您可以从以下链接下载相关的策略文件。

Java 8的策略jar
Java 7的策略jar
Java的策略jar6

如果在类path中存在标准的策略jar文件,就会发生这种情况。 我build议find并replace所有的local_policy.jar和us_export_policy.jar文件与您的机器中的这些jar子的不受限制的版本。 如果您正在使用IBM的WAS / Portal Server / RAD,则这里是指向不受限制的JCE策略jar的链接。

有可能你有不同版本的JDK。 例如,如果您的JAVA_HOME指向版本7,但在版本7之前的版本6中显示path,则可能会popup此错误。