如何安装Unlimited Strength Jurisdiction Policy Files?

mil*_*ola 5 java jar maven

有人可以向我解释如何安装Unlimited Strength Jurisdiction Policy Files.我从Oracle网站下载了.jar文件,但我遇到了安装它们的问题.我正在制作的Java程序一直给我这个错误:

Jan 11, 2017 12:32:31 AM com.subgraph.orchid.TorClient start
INFO: Starting Orchid (version: 1.0.0)
Jan 11, 2017 12:32:31 AM com.subgraph.orchid.TorClient verifyUnlimitedStrengthPolicyInstalled
SEVERE: Unlimited Strength Jurisdiction Policy Files are required but not installed.
Exception in thread "main" com.subgraph.orchid.TorException: Unlimited Strength Jurisdiction Policy Files are required but not installed.
    at com.subgraph.orchid.TorClient.verifyUnlimitedStrengthPolicyInstalled(TorClient.java:208)
    at com.subgraph.orchid.TorClient.start(TorClient.java:79)
    at com.nikola.WebCrawlerApp.App$OrchidDemo.startOrchid(App.java:46)
    at com.nikola.WebCrawlerApp.App$OrchidDemo.access$000(App.java:38)
    at com.nikola.WebCrawlerApp.App.main(App.java:35)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
Run Code Online (Sandbox Code Playgroud)

Mar*_*tek 19

2018-01-15更新

根据JDK-8170157,默认情况下启用JDK 6u181,7u171,8u161,9b148无限制加密策略.所以你要做的就是升级到相应的基线.

原始答案

Java 9Java 8u151开始,不再需要下载和手动安装管辖区策略文件.根据发行说明:

在旧版本中,必须单独下载和安装JCE管辖区文件,以允许JDK使用无限制的加密.不再需要下载和安装步骤.要启用无限制加密,可以使用新的crypto.policy安全属性.如果在java.security文件中设置了新的Security属性,或者在初始化JCE框架Security.setProperty()之前使用该调用动态设置了该属性,那么将遵循该设置.默认情况下,该属性将是未定义的.如果属性未定义且旧版lib/security目录中不存在旧版JCE管辖区文件,则默认加密级别将保持有限.要将JDK配置为使用无限制加密,请将其设置为值.有关详细信息,请参阅此版本附带的java.security文件中的注释.crypto.policyunlimited


And*_*ndy 6

您需要确定Java主路径(通过System.getenv("JAVA_HOME")Java或$ echo $JAVA_HOME在命令行上).它应该是如下的路径:

  • C:\Program Files\Java\jre8 在Windows上
  • /Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home 在Mac OS X上
  • /usr/java/jdk1.8.0_101/bin/java 在*nix

然后,您需要将下载的文件US_export_policy.jarlocal_policy.jar文件复制到目录中:<JAVA_HOME>/jre/lib/security并覆盖现有的同名文件.

2017年5月17日更新

以下代码(仅用于演示目的)将指示JVM允许使用AES-256位加密和相应的TLS密码,而不管安装的策略文件如何.这是不建议采用这种方法.

if (Cipher.getMaxAllowedKeyLength("AES") < 256) {
  try {
    Field field = Class.forName("javax.crypto.JceSecurity").
    getDeclaredField("isRestricted");
    field.setAccessible(true);
    field.set(null, java.lang.Boolean.FALSE);
  } catch (Exception e) {
    fail("Could not override JCE cryptography strength policy setting");
    fail(e.getMessage());
  }
}
Run Code Online (Sandbox Code Playgroud)