原因:java.lang.SecurityException:辖区策略文件未由预期的签名者签名!;
问题原因:java.lang.SecurityException:辖区策略文件未由预期的签名者签名!;,java,mongodb,macos,java-8,jce,Java,Mongodb,Macos,Java 8,Jce,问题 我应该深入研究或解决似乎与JCE和MongoDB有关的问题的可能方法有哪些 简介 多年来,我一直在开发一个基于Java的项目。今天,我遇到了一个似乎与MongoDB和JCE有关的问题。我通过IntelliJ使用Maven将项目编译成uber jar,并试图在我的Mac Pro上执行uber jar jar可以一直执行,直到它尝试调用com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi,可以查看其源代码 不同Mong
我应该深入研究或解决似乎与JCE和MongoDB有关的问题的可能方法有哪些 简介
多年来,我一直在开发一个基于Java的项目。今天,我遇到了一个似乎与MongoDB和JCE有关的问题。我通过IntelliJ使用Maven将项目编译成uber jar,并试图在我的Mac Pro上执行uber jar
jar可以一直执行,直到它尝试调用
com.mongodb.DBPort$ScramSha1Authenticator$ScramSha1SaslClient.Hi
,可以查看其源代码不同MongoDB版本的异常消息 MongoDB版本
org.mongodb
在Oracle发布的JDK 8u161发行说明中:
JDK使用Java加密扩展(JCE)权限策略文件来配置加密算法限制。以前,JDK中的策略文件限制了各种算法。此版本附带有限和无限管辖权策略文件,默认为无限。可以通过/lib/java.Security文件中新的“crypto.policy”安全属性来控制该行为。有关此属性的详细信息,请参阅该文件
在Oracle发布的JDK 8u261发行说明中:
自2018年1月(8u161、7u171)以来,无限Java加密扩展(JCE)权限策略文件已与JDK捆绑在一起,并在默认情况下启用(请参阅JDK加密路线图)
旧的独立jar的证书已过期,如果使用,将看到以下异常:
原因:java.lang.SecurityException:辖区策略
文件未由预期的签名者签名!
(每个主要JDK版本的策略文件都是特定的。请确保安装了正确的版本。)
在javax.crypto.JarVerifier.verifyPolicySigned(JarVerifier.java:336)
在javax.crypto.JceSecurity.LoadPolicys(JceSecurity.java:378)
在javax.crypto.JceSecurity.setupJustictionPolicys上(JceSecurity.java:323)
javax.crypto.JceSecurity.access$000(JceSecurity.java:50)
javax.crypto.JceSecurity$1.run(JceSecurity.java:85)
位于java.security.AccessController.doPrivileged(本机方法)
位于javax.crypto.JceSecurity(JceSecurity.java:82)
如果旧版本仍然需要重新签名的文件,请访问
参考资料
Docs.microfocus.com。2019ITOM从业者门户。[在线]网址:[2021年1月22日访问]
Oracle.com。2018JAVA™ SE开发工具包8,更新161。[在线]网址:[2021年1月22日访问]
Oracle.com。2020JAVA™ SE开发工具包8,更新261发行说明。[在线]网址:[2021年1月22日访问]
这就是我最终解决问题的方法
从下载Java加密扩展(JCE)无限强度权限策略文件。
你需要注册成为甲骨文会员,是的,没错李>
备份原始策略文件。
cd$JAVA\u HOME/lib/security
sudo cp US_export_policy.jar US_export_policy.jar.backup
sudo cp local_policy.jar local_policy.jar.backup
放置注册为Oracle成员后刚下载的策略文件。
sudo cp~/Download/unlimitedcepolicyjdk8/*.jar$JAVA_HOME/lib/security/
我尝试用brew安装openjdk8
,但仍然出现这种现象(异常消息)。这就是我最终解决问题的方法
从下载Java加密扩展(JCE)无限强度权限策略文件。
你需要注册成为甲骨文会员,是的,没错李>
备份原始策略文件。
cd$JAVA\u HOME/lib/security
sudo cp US_export_policy.jar US_export_policy.jar.backup
sudo cp local_policy.jar local_policy.jar.backup
放置注册为Oracle成员后刚下载的策略文件。
sudo cp~/Download/unlimitedcepolicyjdk8/*.jar$JAVA_HOME/lib/security/
我尝试用brew
安装openjdk8,但仍然出现这种现象(异常消息)
adopt-openjdk-1.8 (1.8.0_275)