如何在 OS X 中为 Java 8 安装 unlimited strength JCE?

How to install unlimited strength JCE for Java 8 in OS X?

我需要为 OS X / mac OS 中的 Java 8 安装 Java 加密扩展 。事实证明,installer 随附的 README 文件中的步骤仅包括 UnixWindows 的说明,但不包括 [=13] =] / mac OS。我试图将 JAR 文件放入 $JAVA_HOME/lib/security,但它也不起作用。你知道我该如何安装它们吗?

因为你没有解释你的问题是什么,所以一些猜测。

  1. 使用 Internet 搜索引擎您可能会找到此页面 http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
  2. 您可能已经下载了这个文件jce_policy-8.zip
  3. 也许您会解压缩它并查看目录 UnlimitedJCEPolicyJDK8/
  4. 也许文件 README.txt 会引起您的兴趣

如果所有这些步骤都是正确的,那么您会发现

3)  Install the unlimited strength policy JAR files.

In case you later decide to revert to the original "strong" but
limited policy versions, first make a copy of the original JCE
policy files (US_export_policy.jar and local_policy.jar). Then
replace the strong policy files with the unlimited strength
versions extracted in the previous step.

The standard place for JCE jurisdiction policy JAR files is:

    <java-home>/lib/security           [Unix]
    <java-home>\lib\security           [Windows]

您可以假定 OSX 上的位置与列出的系统相同。

注意:自 Java JDK 版本 8u161 无限加密默认启用

对于 MacOS 用户

如果您是 MacOS 用户,如果您的 java 版本是 8,请放置从 jce_policy-8.zip 中提取的 jar。* 使用下面的路径(将 jar 放在它下面)

/Library/Java/JavaVirtualMachines/**< jdk_version_of_your_pc >**/Contents/Home/jre/lib/security

对于更高版本的 macOS(例如 Sierra),Oracle Java 安装在两个位置,具体取决于您安装的是 JRE 还是 JDK。

  • JRE: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/
  • JDK: /Library/Java/JavaVirtualMachines/jdk1.x.x_xxx.jdk/Contents/Home/
    • 如果安装 JDK,它还会在上面列出的 JRE 位置安装 JRE。

JRE 允许您双击以从 Finder 和 运行 Java 在浏览器中打开 jar。 JRE 不附带 java 二进制文件,因此如果您想要 运行 任何典型的 Java 命令,您必须安装 JDK。更多信息见 https://java.com/en/download/faq/yosemite_java.xml.

综上所述,当安装无限强度的 JCE 文件时,将它们安装在上面列出的两个目录中以获得一致的行为。

Java 8 更新 161

正如 and in Oracle's release notes for Java 8 Update 161 中所指出的,自 Update 161 以来默认启用无限加密,如果使用此版本或更高版本的全新安装,您无需执行任何操作。

Java 8 次更新 151

使用 Java 8 Update 151,Oracle 在 Java 8 中包含了与 Java 9 一起提供的相同 JCE 机制。要在 Java 8 中启用 JCE更新 151 或更高版本,只需设置 属性

crypto.policy=unlimited

$JAVA_HOME/jre/lib/security/java.security.

如 Oracle 在 release notes:

中所述,如果较早添加了旧策略 JAR,则删除它们可能是个好主意

Because the old JCE jurisdiction files are left in /lib/security, they may not meet the latest security JAR signing standards, which were refreshed in 6u131, 7u121, 8u111, and later updates.

旧版本

建议通过 Homebrew 安装 JCE 文件的答案将不再有效,因为在 Java 8 Update 151 发布后,这些木桶已从 Homebrew 存储库中删除。如果使用旧版本的 Java 8,您必须按照 .

中的描述手动放置 JCE-Policy-JAR

如果您是 windows 用户:

http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

下载最新的 JCE

解压zip文件并将两个jar文件复制到以下目录

\程序Files\Java\jre1.8.0_131\lib\security

Mac 用户 (OS X) Java 8:

$ brew reinstall java8

从 JDK 1.8u151 开始,无需单独下载 JCE 库。简单编辑

$JDK_HOME/jre/lib/security/java.security

并取消注释行:

crypto.policy=unlimited

这将启用无限强度的 JCE。

JDK 1.8u151 Release Notes

从 Java 8u152 开始,只需在

java.security 文件中设置 crypto.policy=unlimited 即可启用无限强度
/Library/Java/JavaVirtualMachines/<jdk_version>/Contents/Home/jre/lib/security 

它已经在该文件中但被注释掉了。

http://www.oracle.com/technetwork/java/javase/8u152-relnotes-3850503.html#JDK-8157561

从 Java JDK 版本 8u161 unlimited cryptography is enabled by default 开始,不再需要其他建议的方法(除非您想禁用它)。

这个变化也appears to be included in other major JDK versions from JDK 6 to JDK 9.