Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
原因:java.lang.SecurityException:辖区策略文件未由预期的签名者签名!;_Java_Mongodb_Macos_Java 8_Jce - Fatal编程技术网

原因: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)