3478
Java
Java 8 发行版要点说明
Java 8 发行版要点说明
本文适用于:
- Java 版本: 8.0
本页着重说明了各 Java 发行版中影响最终用户的更改。有关更改的详细信息,请参见各发行版的发行说明。
» Java 发行日期
Java 8 Update 111 (8u111)
发行要点说明
- IANA Data 2016f
JDK 8u111 包含 IANA 时区数据版本 2016f。有关详细信息,请参阅 JRE 软件中的时区数据版本。请参阅 JDK-8159684。 - 证书更改:新 JCE 代码签名根 CA
为了支持更长的密钥长度和更强的签名算法,已创建 JCE 提供方代码签名根证书颁发机构,并已将其证书添加到 Oracle JDK。从此时间点向前,从此 CA 颁发的新 JCE 提供方代码签名证书将用于对 JCE 提供方进行签名。默认情况下,JCE 提供方代码签名证书的新请求将从此 CA 发出。
来自当前 JCE 提供方代码签名根的现有证书将继续用于验证。但是,在未来的某个时间,可能会禁用此根 CA。我们建议申请新证书,并对现有提供方 JAR 重新签名。有关 JCE 提供方签名过程的详细信息,请参阅 How to Implement a Provider in the Java Cryptography Architecture 文档。JDK-8141340(非公共) - 服务菜单服务
AWT 菜单组件的生命周期管理在某些平台上会出现问题。此修复可改进菜单与其容器之间的状态同步。JDK-8158993(非公共) - 禁止对 HTTPS 隧道执行“基本”验证
在一些环境中,在执行 HTTPS 代理时某些验证方案可能不是所希望的验证方案。相应地,默认情况下在 Oracle Java 运行时中已停用“基本”验证方案,方法为将 Basic 添加到jdk.http.auth.tunneling.disabledSchemes
网络属性。现在,在为 HTTPS 设置隧道时,默认情况下需要Basic
验证的代理将不再成功。如果需要,可以通过从jdk.http.auth.tunneling.disabledSchemes
网络属性中删除Basic
,或者通过在命令行上将同名的系统属性设置为""
(空),来重新激活此验证方案。此外,可以使用jdk.http.auth.tunneling.disabledSchemes
和jdk.http.auth.proxying.disabledSchemes
网络属性以及同名的系统属性来禁用其他一些验证方案。在为 HTTPS 设置隧道或者执行普通 HTTP 代理时,这些验证方案可能分别处于活动状态。JDK-8160838(非公共) -
限制使用弱算法和密钥签名的 JAR
此 JDK 发行版对如何验证签名的 JAR 文件引入了新限制。如果已签名 JAR 文件使用禁用的算法或小于最小长度的密钥大小,签名验证操作将忽略签名,并将 JAR 文件视为未签名状态。在使用已签名 JAR 文件的以下类型的应用程序中,可能会出现此情况:
1.小应用程序或 Web Start 应用程序
2.独立应用程序或服务器应用程序,这些应用程序在启用 SecurityManager 的情况下运行,并且已配置有根据 JAR 的代码签署人授予权限的策略文件。
禁用算法列表是通过java.security
文件中的新安全属性jdk.jar.disabledAlgorithms
进行控制的。此属性包含用于以加密方式签名的 JAR 文件的禁用算法列表和密钥大小。
以下算法和密钥大小在此发行版中受到限制:- MD2(在摘要或签名算法中)
- 小于 1024 位的 RSA 密钥
要检查是否已使用弱算法或密钥对 JAR 文件进行签名,您可以使用随此 JDK 一起提供的jarsigner
二进制文件。在使用弱算法或密钥签名的 JAR 文件上,运行jarsigner -verify -J-Djava.security.debug=jar
会输出有关已禁用算法或密钥的详细信息。
例如,要检查名为test.jar
的 JAR 文件,请使用以下命令:jarsigner -verify -J-Djava.security.debug=jar test.jar
如果已使用 MD2withRSA 之类的弱签名算法对本示例中的文件进行签名,则将显示以下输出:jar: beginEntry META-INF/my_sig.RSA
jar: processEntry: processing block
jar: processEntry caught: java.security.SignatureException: Signature check failed. Disabled algorithm used: MD2withRSA
jar: done with meta!
更新的jarsigner
命令将退出,并将下面的警告输出到标准输出中:
“签名无法解析或无法验证。jar 将被视为未签名。可能已使用当前已禁用的弱算法对 jar 进行了签名。有关详细信息,请在启用调试的情况下重新运行jarsigner
(-J-Djava.security.debug=jar
)”
要解决此问题,将需要使用更强的算法或更大的密钥大小对 JAR 文件重新签名。另外,通过从jdk.jar.disabledAlgorithms
安全属性中删除相应的弱算法或密钥大小,可以恢复限制;但不建议使用此选项。在对受影响的 JAR 文件重新签名之前,应从 JAR 中删除现有签名。可使用zip
实用程序执行此操作,如下所示:
zip -d test.jar 'META-INF/*.SF' 'META-INF/*.RSA' 'META-INF/*.DSA'
请定期在 https://java.comhttps://www.java.com/cryptoroadmap 上检查 Oracle JRE 和 JDK 加密路线图,了解计划对已签名 JAR 文件和其他安全组件进行的限制。特别是,请注意当前计划是在 2017 年 4 月版 CPU 中限制已签名 JAR 文件中的基于 MD5 的签名。
要测试是否已使用 MD5 对 JAR 进行签名,可将MD5
添加到jdk.jar.disabledAlgorithms
安全属性,例如:
jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize <>
,
然后按照上面所述对 JAR 文件运行jarsigner -verify -J-Djava.security.debug=jar
。
JDK-8155973(非公共) -
警告消息已添加到部署验证程序对话框
已将一条警告添加到插件验证对话框中,在使用代理或不使用 SSL/TLS 协议的情况下使用 HTTP 基本验证(身份证明在不加密的情况下发送)时,将会显示该警告:
“警告:基本验证方案将有效地以明文方式传输身份证明。是否确实要执行此操作?”
JDK-8161647(非公共)
已知问题
在 Windows 上,一些事件在 JFR 录制中不可用
对于发行版 8u111,以下事件在 Windows 上的 JFR 录制中不可用:hotspot/jvm/os/processor/cpu_load
os/processor/context_switch_rate
这是由于在带有 JDK-8162419 更改的 8u111 中引入了回归 JDK-8063089 所致。8u111 发行版中无法包含 JDK-8063089 的修复。它将包含在下一个 8u111 BPR 工作版本以及下一个公开发行版中。
JDK-8063089(非公共)
JVM 在 macOS Sierra 10.12 上引发了 NullPointerExceptions
在 macOS Sierra 10.12 上,当小应用程序正在浏览器中运行时,如果用户按功能键(例如 Command、Shift 或 Alt),则可能会显示名为“内部错误”的错误框。它还将在 macOS 停靠栏中显示 "exec" 图标。用户可以关闭小应用程序,或者尝试在未按功能键的情况下重新运行小应用程序。要修复此问题,用户可安装 JRE 8u112。请参阅 JDK-8165867。
Java 到期日期
8u111 的到期日期是 2017 年 1 月 17 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u111)于 2017 年 2 月 17 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
Bug 修复
本发行版包含对安全漏洞的修复。有关详细信息,请参阅 Oracle Java SE Critical Patch Update Advisory。有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u111 Bug 修复页。
Java 8 Update 101 (8u101)
发行要点说明
- IANA Data 2016d
JDK 8u101 包含 IANA 时区数据版本 2016d。有关详细信息,请参阅 JRE 软件中的时区数据版本。请参阅 JDK-8151876。 - 证书更改
新 DTrust 证书已添加到根 CA
已添加两个新的根证书:
-
D-TRUST Root Class 3 CA 2 2009
别名:dtrustclass3ca2
DN:CN=D-TRUST Root Class 3 CA 2 2009,O=D-Trust GmbH,C=DE
D-TRUST Root Class 3 CA 2 EV 2009
别名:dtrustclass3ca2ev
DN:CN=D-TRUST Root Class 3 CA 2 EV 2009,O=D-Trust GmbH,C=DE
新 Iden 证书已添加到根 CA
已添加三个新的根证书:
-
IdenTrust Public Sector Root CA 1
别名:identrustpublicca
DN:CN=IdenTrust Public Sector Root CA 1,O=IdenTrust,C=US -
IdenTrust Commercial Root CA 1
别名:identrustcommercial
DN:CN=IdenTrust Commercial Root CA 1,O=IdenTrust,C=US -
IdenTrust DST Root CA X3
别名:identrustdstx3
DN:CN=DST Root CA X3,O=Digital Signature Trust Co.
已删除 Comodo 根 CA
已从 cacerts 文件中删除 Comodo "UTN - DATACorp SGC" 根 CA 证书。请参阅 JDK-8141540
已删除 Sonera Class1 CA
已从 cacerts 文件中删除 "Sonera Class1 CA" 根 CA 证书。请参阅 JDK-8141276。 -
- 改进对 javax.rmi.CORBA.ValueHandler 的访问控制
javax.rmi.CORBA.Util
类提供了可供存根和绑定使用的方法来执行常见操作。它还用作 ValueHandlers 的工厂。javax.rmi.CORBA.ValueHandler
接口提供了服务,用于支持对 GIOP 流读取和写入值类型。这些实用程序的安全意识已通过引入权限java.io.SerializablePermission("enableCustomValueHanlder")
而得到增强。这用于在javax.rmi.CORBA.Util
的用户与javax.rmi.CORBA.ValueHandler
API 之间建立信任关系。
所需的权限为"enableCustomValueHanlder"
SerializablePermission。如果在安装了 SecurityManager 的情况下运行第三方代码,但在调用Util.createValueHandler()
时没有新权限,则会失败,并出现 AccessControlException。
在 JDK8u 及以前的发行版中,可以定义系统属性"jdk.rmi.CORBA.allowCustomValueHandler"
来覆盖此权限检查行为。
因此,如果已安装 SecurityManager 并且不满足以下两个要求,则需要对显式调用javax.rmi.CORBA.Util.createValueHandler
的外部应用程序执行配置更改:- SecurityManager 未对
java.io.SerializablePermission("enableCustomValueHanlder")
进行授权。 - 当应用程序在 JDK8u 和之前的版本上运行时,系统属性
"jdk.rmi.CORBA.allowCustomValueHandler"
未定义或者已定义为 "false"(不区分大小写)。
请注意,"enableCustomValueHanlder"
拼写错误将在 2016 年 10 月的发行版中更正。在这些及未来的 JDK 发行版中,"enableCustomValueHandler"
将作为正确的 SerializationPermission 来使用。
JDK-8079718(非公共) - SecurityManager 未对
- 在 jarsigner 中增加了指定时间戳散列算法的支持
jarsigner
增加了新的-tsadigestalg
选项,可用于指定消息摘要算法,该算法用于生成要发送到 TSA 服务器的消息印记。在较早的 JDK 发行版中,使用的消息摘要算法是 SHA-1。如果未指定此新选项,则将在 JDK 7 Update 和 JDK 产品系列的更高版本中使用 SHA-256。在 JDK 6 Update 中,仍将 SHA-1 保留为默认值,但会在标准输出流中输出警告。请参阅 JDK-8038837 - MSCAPI 密钥库可以处理同名证书
Java SE 密钥库不允许使用具有相同别名的证书。但是,在 Windows 上,允许存储在一个密钥库中的多个证书具有不唯一的友好名称。利用 JDK-6483657 的修复,可以通过 Java API 以手工方式使可见别名变得唯一,从而对此类命名不唯一的证书执行操作。请注意,此修复未启用通过 Java API 创建同名证书的功能。它只允许您处理由第三方工具添加到密钥库的同名证书。仍然建议您在设计时不要使用同名的多个证书。特别是,Java 文档中将不删除以下说明:
“为避免问题,建议不要在密钥库中使用只有大小写不同的别名。”
请参阅 JDK-6483657。 - 部署工具包 API 方法不再安装 JRE
对于来自deployJava.js
的部署工具包 APIinstallLatestJRE()
和installJRE(requestedVersion)
方法,以及来自dtjava.js
的install()
方法,不再安装 JRE。如果用户的 Java 版本低于安全基线,则会将用户重定向到java.com
以获取更新后的 JRE。JDK-8148310(非公共) - 与 ProtectionDomain 对象结合时,DomainCombiner 不再咨询静态 ProtectionDomain 对象的运行时策略
通过此修复,使用权限集不足的静态 ProtectionDomain 对象(使用双参数构造器创建)的应用程序现在会遇到 AccessControlException。它们应使用其权限集可通过当前策略扩展的动态对象(使用四参数构造器)来替换静态 ProtectionDomain 对象,或者构造具有所有必需权限的静态 ProtectionDomain 对象。JDK-8147771(非公共)
已知问题
在使用静态类 ID 时,Internet Explorer (IE) 无法识别 JRE 8u101
使用 JRE 8u101 时,如果使用静态类 ID 来启动小应用程序或 Web Start 应用程序,则用户会看到意外的对话框,说明应该使用最新的 JRE 或取消启动,即使用户已安装并正在使用最新的 JRE (JRE 8u101) 也是如此。这种特殊情况仅在 Windows 和 IE 中发生。
根据 https://www.oracle.com/technetwork/java/javase/family-clsid-140615.html,我们建议不为 JRE 版本选择使用静态类 ID(自 2005 年 12 月 JDK 5u6 起)。
要解决此问题,用户可以执行以下两种操作之一:- 使用最新版本 (8u101) 启动并忽略警告。
- 安装 JRE 8u102 而非 JRE 8u101 以避免出现此问题。
- 使用动态类 ID 而非静态类 ID。
- 在使用 HTML 小应用程序时或者在将 JNLP 描述符用于 JNLP 时,使用 java_version。
Java 到期日期
8u101 的到期日期为 2016 年 10 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u101)于 2016 年 11 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
Bug 修复
本发行版包含对安全漏洞的修复。有关详细信息,请参阅 Oracle Java SE Critical Patch Update Advisory。有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u101 Bug 修复页。
Java 8 Update 91 (8u91)
发行版要点说明
- IANA Data 2016a
JDK 8u91 包含 IANA 时区数据版本 2016a。有关详细信息,请参阅 JRE 软件中的时区数据版本。 - Bug 修复:小应用程序启动时间衰退已修复
JDK-8080977 针对小应用程序启动引入了延迟。此延迟仅在 IE 上出现且持续约 20 秒。JDK-8136759 删除了此延迟。请参阅 JDK-8136759 - Bug 修复:现在,生成 DSA 签名时需要进行密钥强度检查
对于签名生成,如果摘要算法的安全强度弱于签名时所用密钥的安全强度(例如,使用(2048,256)位 DSA 密钥的 SHA1withDSA 签名),则操作将失败,出现错误消息:“SHA1 摘要算法的安全强度对于此密钥大小不足。”JDK-8138593(非公共) - Bug 修复:Firefox 42 实时连接问题
因为这可能导致浏览器挂起,在从plugin-container.exe
启动 Java 插件(Firefox 42 的默认行为)并且小应用程序状态不是就绪 (2) 时,我们不处理 JavaScript-to-Java 调用。如果小应用程序未就绪(状态不是 2),则我们不执行实际的 Java 方法,仅返回空值。
如果从plugin-container.exe
启动插件,则不使用可能需要超过 11 秒时间(dom.ipc.plugins.hangUITimeoutSecs
的默认值)来完成的 JavaScript-To-Java 调用,或者在 JavaScript-To-Java 调用期间显示模态对话框。在这种情况下,必须阻止主浏览器线程,这可能会导致浏览器挂起和插件终止。
针对 Firefox 42 的解决方法:用户可以设置dom.ipc.plugins.enabled=false
。此解决方法的副作用是会更改所有插件的设置。JDK-8144079(非公共) - Bug 修复:JMX RMI JRMP 服务器的新属性指定在反序列化服务器身份证明时使用的类名列表。
已经为环境定义新的 Java 属性以允许 JMX RMI JRMP 服务器指定类名列表。这些名称对应于服务器在反序列化身份证明时所需的类名的集合。例如,如果预期身份证明为List<string>
,则括号中将包含所有预期采用字符串列表串行格式的具体类。
默认情况下,此属性仅由默认代理使用,具有以下特点:
{ "[Ljava.lang.String;", "java.lang.String" }
反序列化身份证明时仅接受字符串数组和字符串。属性名为:"jmx.remote.rmi.server.credential.types"
以下是用户使用指定的身份证明类名启动服务器的示例:Map<String, Object> env = new HashMap<>(1); env.put ( "jmx.remote.rmi.server.credential.types", new String[]{ String[].class.getName(), String.class.getName() } ); JMXConnectorServer server = JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbeanServer);
新功能应该通过直接指定以下内容来使用:
"jmx.remote.rmi.server.credential.types"
JDK-8144430(非公共) - Bug 修复:在 JSSE 提供程序中禁用 MD5withRSA 签名算法
现在认为 MD5withRSA 签名算法不安全,不应再使用。相应地,默认情况下,在 Oracle JSSE 实现中通过将 "MD5withRSA" 添加到 "jdk.tls.disabledAlgorithms" 安全属性来停用 MD5withRSA。现在,默认情况下不再接受使用 MD5withRSA 算法签名的 TLS 握手消息和 X.509 证书。此更改扩展以前基于 MD5 的证书限制 ("jdk.certpath.disabledAlgorithms"),以在其中另外包括 TLS 版本 1.2 中的握手消息。如果需要,可以通过从 "jdk.tls.disabledAlgorithms" 安全属性中删除 "MD5withRSA" 来重新激活此算法。JDK-8144773(非公共) - Bug 修复:新证书已添加到根 CA
已添加八个新的根证书:-
QuoVadis Root CA 1 G3
别名:quovadisrootca1g3
DN:CN=QuoVadis Root CA 1 G3,O=QuoVadis Limited,C=BM -
QuoVadis Root CA 2 G3
别名:quovadisrootca2g3
DN:CN=QuoVadis Root CA 2 G3 -
QuoVadis Root CA 3 G3
别名:quovadisrootca3g3
DN:CN=QuoVadis Root CA 3 G3,O=QuoVadis Limited,C=BM -
DigiCert Assured ID Root G2
别名:digicertassuredidg2
DN:CN=DigiCert Assured ID Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US -
DigiCert Assured ID Root G3
别名:digicertassuredidg3
DN:CN=DigiCert Assured ID Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US -
DigiCert Global Root G2
别名:digicertglobalrootg2
DN:CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US -
DigiCert Global Root G3
别名:digicertglobalrootg3
DN:CN=DigiCert Global Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US -
DigiCert Trusted Root G4
别名:digicerttrustedrootg4
DN:CN=DigiCert Trusted Root G4,OU=www.digicert.com,O=DigiCert Inc,C=US
-
注释
删除静态 JRE
对于在版本 8u91 之前发行的 Windows 版 Java 安装程序,默认情况下不删除静态安装的 JRE。要删除静态安装的 JRE,用户必须在 Java 安装程序的用户界面中手动选择这些 JRE。现在,在 Java 发行版 8u91 和更高版本中,静态安装的 JRE 在低于安全基线时将被自动删除。有关静态安装的详细信息,请参阅 Java 运行时环境配置。
Java 到期日期
8u91 的到期日期为 2016 年 7 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u91)于 2016 年 8 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
Bug 修复
本发行版包含对安全漏洞的修复。有关详细信息,请参阅 Oracle Java SE Critical Patch Update Advisory。有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u91 Bug 修复页。
Java 8 Update 77 (8u77)
- IANA Data 2016a
JDK 8u77 包含 IANA 时区数据版本 2016a。有关详细信息,请参阅 JRE 软件中的时区数据版本。
Java 到期日期
8u77 的到期日期是 2016 年 4 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u77)于 2016 年 5 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
注释
此安全预警 (8u77) 基于早期 8u74 PSU 发行版。所有使用早期 JDK 8 发行版的用户都应更新到此发行版。有关关键补丁程序更新和补丁程序集更新之间的差异的详细信息,请访问 Java CPU 和 PSU 发行版介绍。
8u77 的演示、示例和文档包不受 CVE-2016-0636 安全预警的影响,因此在发布四月的关键补丁程序更新之前,8u73 版本的演示、示例和文档包即为最新的版本。
Bug 修复
本发行版包含安全漏洞的修复。有关详细信息,请参阅 Oracle Java SE Critical Patch Update Advisory。
Java 8 Update 73 (8u73)
发行要点说明
- IANA Data 2015g
JDK 8u73 包含 IANA 时区数据版本 2015g。有关详细信息,请参阅 JRE 软件中的时区数据版本。
Java 到期日期
8u73 的到期日期是 2016 年 4 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u73)于 2016 年 5 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
注释
Oracle 强烈建议下载了受影响的版本并计划在以后安装这些下载版本的 Java 用户放弃这些旧下载。安装了 Java SE 6、7 或 8 的 2016 年 1 月份关键补丁程序更新版本的 Java 用户无需采取行动。未安装 Java SE 6、7 或 8 的 2016 年 1 月份关键补丁程序更新版本的 Java 用户应从 CVE-2016-0603 的安全预警升级到 Java SE 6、7 或 8 发行版。
8u73 的演示、示例和文档包不受 CVE-2016-0603 安全预警的影响,因此在发布四月的关键补丁程序更新之前,8u71 版本的演示、示例和文档包会保持最新的版本。
Bug 修复
本发行版包含安全漏洞的修复。有关详细信息,请参阅 Oracle Java SE Critical Patch Update Advisory。请注意,8u73 不包含在 8u72 中找到的 PSU 工作版本。需要 8u72 中包含的附加 Bug 修复的客户应升级到 8u74 而不是 8u73。
Java 8 Update 71 (8u71)
发行要点说明
- IANA Data 2015g
JDK 8u71 包含 IANA 时区数据版本 2015g。有关详细信息,请参阅 JRE 软件中的时区数据版本。 - Bug 修复:以 root 身份运行 jps 时并不会显示所有信息
在应用 JDK-8050807 修复(在 8u31、7u75 和 6u91 中修复)后,以 root 身份运行 jps 时并不会显示由其他用户在某些系统上启动的 Java 进程中的所有信息。此问题目前已修复。请参阅 JDK-8075773。 - Bug 修复:安装程序对 ESC 配置显示为已过期
对于在 Windows Server 2008 R2 上运行 Internet Explorer 增强安全配置 (ESC) 的用户,在交互模式下安装 Java 时可能会遇到问题。此问题已在 8u71 发行版中得到解决。在交互模式下执行的安装程序对 ESC 配置不会再显示为已过期。请参阅 JDK-8140197。 - Bug 修复:使用 AES 加密的 PBE 算法中的问题已得到更正
已更正使用 256 位 AES 密码的 PBE 错误,这样派生的密钥会有所不同,并且不等于以前从同一口令派生的密钥。JDK-8138589(非公共)。 - Bug 修复:为 XML 最大实体大小增加了默认限制
已为最大实体大小增加了默认限制。有关 XML 处理限制的详细信息,请参阅 Java 教程中的处理限制。JDK-8133962(非公共) - Bug 修复:企业 MSI 开关 'REMOVEOLDERJRES' 文档中的问题已得到更正
企业 MSI 文档列出了配置选项。以前缺少用来卸载旧 JRE 的 REMOVEOLDERJRES 选项。已添加此选项,并提供以下说明:
如果设置为 1,则删除系统上安装的较旧发行版的 JRE。
默认值:0 不删除任何旧 JRE
JDK-8081237(非公共)
Java 到期日期
8u71 的到期日期是 2016 年 4 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u71)于 2016 年 5 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
Bug 修复
本发行版包含安全漏洞的修复。有关详细信息,请参阅 Oracle Java SE Critical Patch Update Advisory。
有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u71 Bug 修复页。
Java 8 Update 66 (8u66)
发行要点说明
8u66 工作版本 18 解决了有关 Firefox 的一个问题。
- Bug 修复:从错误的线程调用
_releaseObject
近期对 Firefox 的一项更改导致从主线程之外的其他线程调用_releaseObject
。这可能会导致争用情况,从而可能无意中使浏览器崩溃。在 8u66 的工作版本 18 中已经解决了这个问题。有关详细信息,请参阅 Bugs@Mozilla 1221448。请参阅 JDK-8133523。
安装 Java 之后,Java 插件在 Firefox 中不工作
在尝试运行 Java 插件时 Firefox 42 可能会崩溃。常见问题中列出了解决方法选项。请参阅 JDK-8142908(非公共)。
Java 到期日期
8u66 的到期日期是 2016 年 1 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u66)于 2016 年 2 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
Bug 修复
本发行版包含安全漏洞的修复。有关详细信息,请参阅 Oracle Java SE Critical Patch Update Advisory。
有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u66 Bug 修复页。
Java 8 Update 65 (8u65)
发行要点说明
- IANA Data 2015f
JDK 8u65 包含 IANA 时区数据版本 2015f。有关详细信息,请参阅 JRE 软件中的时区数据版本。 -
支持 ISO 4217“当前基金代码”表 (A.2)
此增强功能增加了对 ISO 4217 表 A.2 基金代码的支持。以前 JDK 仅支持表 A.1 中列出的货币。请参阅 JDK-8074350。 - Bug 修复: [mac osx] Mac 10.11 上安装的 JRE AU 客户机无法更新到 NEXTVER
8u65 发行版中引入了新的安装程序以将 OS X 用户更新到最新版本。安装程序同时适用于计划的更新和手动更新,并且在 java.com 和 OTN 上提供了软件包。用户在遇到新安装程序的兼容性问题时,可手动下载和安装 My Oracle Support 上提供的 ".pkg" 安装程序。 - Bug 修复:Hotspot 应使用 PICL 接口获取 SPARC 上的高速缓存行大小
目前在 Solaris/SPARC 上需要使用 libpicl 库来确定高速缓存行大小。如果库不存在或者 PICL 服务不可用,JVM 将显示一条警告,并且将关闭利用 BIS(块初始化存储)指令的编译器优化。请参阅 JDK-8056124。 - Bug 修复:dns_lookup_realm 默认情况下应为 false
Kerberos krb5.conf 文件中的 dns_lookup_realm 设置默认情况下为 false。请参阅 JDK-8080637。 - Bug 修复:调用
signal()
期间预加载libjsig.dylib
时会导致死锁
应用程序需要预加载libjsig
库才能启用信号链接。以前在 OS X 上,预加载libjsig.dylib
后,从本机代码对signal()
进行的任何调用都会导致死锁。此问题已得到更正。请参阅 JDK-8072147。 - Bug 修复:更好的组动态
在 OpenJDK SSL/TLS/DTLS 实施(SunJSSE 提供程序)中,默认情况下会使用安全素数 Diffie-Hellman 组。用户可通过安全属性jdk.tls.server.defaultDHEParameters
定制 Diffie-Hellman 组。 - Bug 修复:使用
Instrumentation.redefineClasses
重新定义类时 VM 崩溃
使用Instrumentation.redefineClasses()
重新定义类时,JVM 会崩溃。此崩溃可能是由SystemDictionary::resolve_or_null
分段故障或内部错误(显示消息“标记与解析错误表不匹配”)所致。此问题目前已修复。请参阅 JDK-8076110。
注释
当在 OSX 10.11 El Capitan 上运行时,如果启用 SIP,则从命令行运行 Java 或双击 JAR 文件时,可能会从环境中删除一些用于调试应用程序的特定环境变量,例如 DYLD_LIBRARY_PATH
。在生产环境中应用程序不应依赖于这些变量,这些变量仅用于在开发期间进行调试。
MD5 不能用于需要阻止冲突的数字签名。为了防止在执行 X.509 证书操作时将 MD5 用作数字签名算法,我们将 MD5 添加到 jdk.certpath.disabledAlgorithms
安全属性。对于仍在使用 MD5 签名证书的应用程序,请尽快升级弱证书。
已知问题
[macosx] 赞助商产品屏幕可访问性 (a11y) 问题
用户在使用键盘访问 Java 安装程序中的用户界面时,将无法在软件加载项产品屏幕中访问超链接和复选框。作为在用户界面中设置与加载项软件相关的首选项的一种解决方法,用户可以通过在 Java 控制面板中禁用此类产品或通过命令行传递 SPONSORS=0
来禁用这些产品。有关详细信息,请参阅安装不带赞助商产品的 Java 的常见问题。
Java 到期日期
8u65 的到期日期是 2016 年 1 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u65)于 2016 年 2 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
Bug 修复
本发行版包含安全漏洞的修复。有关详细信息,请参阅 Oracle Java SE Critical Patch Update Advisory。
有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u65 Bug 修复页。
Java 8 Update 60 (8u60)
发行要点说明
- IANA Data 2015e
JDK 8u60 包含 IANA 时区数据版本 2015e。有关详细信息,请参阅 JRE 软件中的时区数据版本。 - Bug 修复:dns_lookup_realm 默认情况下应为 false
Kerberos krb5.conf
文件中的 dns_lookup_realm 设置默认情况下为false
。请参阅 8080637。 - Bug 修复:禁用 RC4 密码套件
基于 RC4 的 TLS 密码套件(例如 TLS_RSA_WITH_RC4_128_SHA)现在被视为有漏洞,不再使用(请参阅 RFC 7465)。相应地,默认情况下,在 Oracle JSSE 实现中通过将 "RC4" 添加到 "jdk.tls.disabledAlgorithms" 安全属性,并将其从默认启用的密码套件列表中删除,已停用了基于 RC4 的 TLS 密码套件。通过从java.security
文件包含的 "jdk.tls.disabledAlgorithms" 安全属性中删除 "RC4",或者动态调用 Security.setProperty() 并使用 SSLSocket/SSLEngine.setEnabledCipherSuites() 方法将其读取到启用的密码套件列表中,可以重新激活这些密码套件。您还可以使用-Djava.security.properties
命令行选项来覆盖jdk.tls.disabledAlgorithms
安全属性。例如:
java -Djava.security.properties=my.java.security ...
其中my.java.security
是包含不带 RC4 的属性的文件:
jdk.tls.disabledAlgorithms=SSLv3
即使从命令行设置了此选项,仍必须使用SSLSocket/SSLEngine.setEnabledCipherSuites()
方法向启用的密码套件列表重新添加基于 RC4 的密码套件。请参阅 8076221。 - Bug 修复:支持 JKS 和 PKCS12 密钥库的密钥库类型检测
密钥库兼容性模式:为了提升互操作性,Java 密钥库类型 JKS 现在默认支持密钥库兼容性模式。此模式使得 JKS 密钥库可以访问 JKS 和 PKCS12 文件格式。要禁用密钥库兼容性模式,请将安全属性keystore.type.compat
设置为字符串值false
。请参阅 8062552。 - Bug 修复:JDK 8u 发行版中不安全的监视方法已过时
sun.misc.Unsafe
上的方法monitorEnter
、monitorExit
和tryMonitorEnter
在 JDK 8u60 中被标记为已过时,将在以后的发行版中删除。这些方法不在 JDK 自身内部使用,也极少在 JDK 之外使用。请参阅 8069302。 - Bug 修复:使用 SA 从核心文件提取 JFR 记录
DumpJFR 是基于可服务性代理的工具,可用于从核心文件和实时 Hotspot 进程提取 Java 飞行记录器 (JFR) 数据。可以通过以下方法使用 DumpJFR:- 将 DumpJFR 附加到实时进程:
java -cp $JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.tools.DumpJFR <pid>
- 将 DumpJFR 附加到核心文件:
java -cp $JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.tools.DumpJFR <java> <core>
- 将 DumpJFR 附加到实时进程:
- Bug 修复:名为 "enum" 的本地变量导致虚假的编译器崩溃
javac
语法分析器未正确对名为 "enum" 的本地变量进行语法分析;当程序包含此类本地变量时,如果在编译过程中使用的 "source" 标记对应于不支持枚举构造的发行版(例如 "-source 1.4"),则会产生虚假的失败。请参阅 8069181。
用于 ARM 的 Java 开发工具包发行版 8u60
此发行版包含用于 ARM 的 Java 开发工具包发行版 8u60(用于 ARM 的 JDK 8u60)。有关 ARM 设备支持信息,请参阅用于 ARM 的 JDK 下载页。有关系统要求、安装说明和故障排除提示,请参阅安装说明页。
限制:本机内存跟踪支持仅限于用于 ARM 的 JDK。ARM 目标不支持 Java 命令行选项 XX:NativeMemoryTracking=detail
(会向用户显示一条错误消息)。请改为使用以下选项:
XX:NativeMemoryTracking=summary
针对 Nashorn 增强功能对文档进行了更新
JDK 8u60 包括针对 Nashorn 的全新增强功能。因此,应该随最新 Nashorn 文档一起阅读以下文档更改:- 补充:在以前的章节中,我们提到了每个 JavaScript 对象在公开到 Java API 时会实现
java.util.Map
接口。这甚至对于 JavaScript 数组也成立。但是,当 Java 代码预期的是通过 JSON 进行语法分析的对象时,这通常不是所需或预期的行为。对于处理通过 JSON 进行语法分析的对象的 Java 库,通常的预期是数组会公开java.util.List
接口。如果您需要公开 JavaScript 对象,从而将数组作为列表而非映射公开,您可以使用Java.asJSONCompatible(obj)
函数,其中obj
是您的 JSON 对象树的根。 - 更正:在映射数据类型一节末尾提到的注意事项不再适用。Nashorn 确保在向外部公开内部 JavaScript 字符串时,将这些字符串转换为
java.lang.String
。 - 更正:在映射数据类型一节中提到的“例如,必须显式转换数组...”的说法不正确。数组会自动转换为 Java 数组类型,例如
java.util.List
、java.util.Collection
、java.util.Queue
和java.util.Deque
等等。
对部署规则集 v1.2 进行了更改
JDK 8u60 实现了部署规则集 (DRS) 1.2,其中包括以下更改:- 添加
"checksum"
元素作为"id"
的子元素,这可允许通过未解压缩形式 jar 的 SHA-256 校验和来标识未签名的 jar:"checksum"
元素只与未签名的 jar 匹配,指定的散列将只与未解压缩形式的 jar 比较。"checksum"
元素(类似于"certificate"
元素)具有两个参数"hash"
和"algorithm"
,但是,与"certificate"
元素不同,"algorithm"
唯一支持的值为 "SHA-256"。将忽略提供的所有其他值。
- 允许将
"message"
元素应用到所有规则类型,而以前只能应用到阻塞规则:- 在一个运行规则中,message 子元素将导致显示消息对话框,而在没有运行规则时,默认行为是显示证书或未签名对话框。消息将显示在消息对话框中。
- 在默认规则中,只有在默认操作为“阻塞”时才会显示消息。在这种情况下,消息将包括在阻塞对话框中。
- 在 Java 控制台、跟踪文件和 Java Usage Tracker 记录中回显
"customer"
块。- 在 DRS 1.2 之前,
"customer"
元素(以及任意子元素)可以包括在ruleset.xml
文件中。忽略此元素及其所有子元素。在 DRS 1.2 中,仍会从功能方面忽略这些元素。但是:
- 对
ruleset.xml
文件进行语法分析时,所有"customer"
块都将回显到 Java 控制台和部署跟踪文件(如果启用了“控制台”和“跟踪”)。 - 使用规则时,包括在该规则中的所有
"customer"
记录都将添加到 Java Usage Tracker (JUT) 记录中(如果启用了 JUT)。
- 对
- 在 DRS 1.2 之前,
<!ELEMENT ruleset (rule*)> <!ATTRIBUTE ruleset href CDATA #IMPLIED> <!ATTRIBUTE ruleset version CDATA #REQUIRED> <!ELEMENT rule (id, action)> <!ELEMENT id (certificate?) (checksum?) > <!ATTRIBUTE id title CDATA #IMPLIED> <!ATTRIBUTE id location CDATA #IMPLIED> <!ELEMENT certificate EMPTY> <!ATTLIST certificate algorithm CDATA #IMPLIED> <!ATTLIST certificate hash CDATA #REQUIRED> <!ELEMENT checksum EMPTY> <!ATTLIST checksum algorithm CDATA #IMPLIED> <!ATTLIST checksum hash CDATA #REQUIRED> <!ELEMENT action (message?)> <!ATTRIBUTE permission (run | block | default) #REQUIRED> <!ATTRIBUTE version CDATA #IMPLIED> <!ATTRIBUTE force (true|false) "false"> <!ELEMENT message (#PCDATA)> <!ATTLIST message locale CDATA #IMPLIED>
Java 到期日期
8u60 的到期日期为 2015 年 10 月 20 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u60)于 2015 年 11 月 20 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
Bug 修复
有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u60 Bug 修复页。
Java 8 Update 51 (8u51)
发行要点说明
- IANA Data 2015d
JDK 8u51 包含 IANA 时区数据版本 2015d。有关详细信息,请参阅 JRE 软件中的时区数据版本。 -
Bug 修复:将新的 Comodo 根证书添加到根 CA
已为 Commodo 添加四个新的根证书:COMODO ECC 证书颁发机构
别名:comodoeccca
DN:CN=COMODO ECC Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GBCOMODO RSA 证书颁发机构
别名:comodorsaca
DN:CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GBUSERTrust ECC 证书颁发机构
别名:usertrusteccca
DN:CN=USERTrust ECC Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=USUSERTrust RSA 证书颁发机构
别名:usertrustrsaca
DN:CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US
-
Bug 修复:将新的 GlobalSign 根证书添加到根 CA
已为 GlobalSign 添加两个根证书:GlobalSign ECC 根 CA - R4
别名:globalsigneccrootcar4
DN:CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R4GlobalSign ECC 根 CA - R5
别名:globalsigneccrootcar5
DN:CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R5
-
Bug 修复:将 Actalis 添加到根 CA
添加了一个新的根证书:
Actalis 验证根 CA
别名:actalisauthenticationrootca
DN:CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT
请参阅 JDK-8077903(非公共)。 -
Bug 修复:添加新的 Entrust ECC 根证书
添加了一个新的根证书:
Entrust 根证书颁发机构 - EC1
别名:entrustrootcaec1
DN:CN=Entrust Root Certification Authority - EC1,OU="(c) 2012 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US
请参阅 JDK-8073286(非公共)。 -
Bug 修复:删除旧的 Valicert 1 和 2 类策略根证书
删除了两个包含 1024 位密钥的根证书:ValiCert 1 类策略验证权威机构
别名:secomvalicertclass1ca
DN:EMAILADDRESS=info@valicert.com,CN=https://www.valicert.com/,OU=ValiCert Class 1 Policy Validation Authority,O="ValiCert, Inc.",L=ValiCert Validation NetworkValiCert 2 类策略验证权威机构
别名:valicertclass2ca
DN:EMAILADDRESS=info@valicert.com,CN=https://www.valicert.com/,OU=ValiCert Class 2 Policy Validation Authority,O="ValiCert, Inc.",L=ValiCert Validation Network
-
Bug 修复:删除旧的 Thawte 根证书
删除了两个包含 1024 位密钥的根证书:Thawte 服务器 CA
别名:thawteserverca
DN:EMAILADDRESS=server-certs@thawte.com,CN=Thawte Server CA,OU=Certification Services Division,O=Thawte Consulting cc,L=Cape Town,ST=Western Cape,C=ZAThawte 个人免费邮件 CA
别名:thawtepersonalfreemailca
DN:EMAILADDRESS=personal-freemail@thawte.com,CN=Thawte Personal Freemail CA,OU=Certification Services Division,O=Thawte Consulting,L=Cape Town,ST=Western Cape,C=ZA
-
Bug 修复:删除更多旧的 Verisign、Equifax 和 Thawte 根证书
删除了五个包含 1024 位密钥的根证书:Verisign 3 类公共主证书颁发机构 - G2
别名:verisignclass3g2ca DN:OU=VeriSign Trust Network,OU="(c) 1998 VeriSign, Inc. - For authorized use only",OU=Class 3 Public Primary Certification Authority - G2,O="VeriSign, Inc.",C=USThawte 高级服务器 CA
别名:thawtepremiumserverca
DN:EMAILADDRESS=premium-server@thawte.com,CN=Thawte Premium Server CA,OU=Certification Services Division,O=Thawte Consulting cc,L=Cape Town,ST=Western Cape,C=ZAEquifax Secure 证书颁发机构
别名:equifaxsecureca
DN:OU=Equifax Secure Certificate Authority,O=Equifax,C=USEquifax Secure 电子商务 CA-1
别名:equifaxsecureebusinessca1
DN:CN=Equifax Secure eBusiness CA-1,O=Equifax Secure Inc.,C=US-
Equifax Secure 全球电子商务 CA-1
别名:equifaxsecureglobalebusinessca1
DN:CN=Equifax Secure Global eBusiness CA-1,O=Equifax Secure Inc.,C=US
-
Bug 修复:从 cacerts 中删除 TrustCenter CA 根证书
删除了三个根证书:-
TC TrustCenter 通用 CA I
别名:trustcenteruniversalcai
DN:CN=TC TrustCenter Universal CA I,OU=TC TrustCenter Universal CA,O=TC TrustCenter GmbH,C=DE -
TC TrustCenter 2 类 CA II
别名:trustcenterclass2caii
DN:CN=TC TrustCenter Class 2 CA II,OU=TC TrustCenter Class 2 CA,O=TC TrustCenter GmbH,C=DE -
TC TrustCenter 4 类 CA II
别名:trustcenterclass4caii
DN:CN=TC TrustCenter Class 4 CA II,OU=TC TrustCenter Class 4 CA,O=TC TrustCenter GmbH,C=DE
-
-
Bug 修复:SunJSSE 提供方中的 RC4 已过时
RC4 现在已被视为弱密码。除非在客户机请求的密码套件中没有其他更强的密码可用,否则服务器不应选择 RC4。增加了新的安全属性jdk.tls.legacyAlgorithms
来定义 Oracle JSSE 实现中的传统算法。RC4 相关算法已添加到传统算法列表中。请参阅 JDK-8074006(非公共)。 -
Bug 修复:禁止使用 RC4 密码套件
RC4 现在已被视为弱密码。在 Oracle JSSE 实现中,RC4 密码套件已从客户机和服务器的默认启用密码套件列表中删除。这些密码套件仍可以通过SSLEngine.setEnabledCipherSuites()
和SSLSocket.setEnabledCipherSuites()
方法启用。请参阅 JDK-8077109(非公共)。 -
Bug 修复:改进的认证检查
在进行此修复后,默认情况下,JSSE 端点标识在 JDK 不会对 IP 地址执行反向名称查找。如果应用程序确实需要在 SSL/TLS 连接中对原始 IP 地址执行反向名称查找,并且遇到端点标识兼容性问题,则可以使用系统属性 "jdk.tls.trustNameService" 来切换到反向名称查找。请注意,如果名称服务不可信任,启用反向名称查找可能会遭致 MITM 攻击。请参阅 JDK-8067695(非公共)。
Java 到期日期
8u51 的到期日期为 2015 年 10 月 20 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u51)于 2015 年 11 月 20 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
Bug 修复
本发行版包含安全漏洞的修复。有关详细信息,请参阅 Oracle Java SE Critical Patch Update Advisory。
有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u51 Bug 修复页。
最后更新:2017-01-12 10:53:03
上一篇:
为什么会显示 "Java Update Needed"(需要 Java Update)消息:"Your Java version is out of date"(您的 Java 版本已过期)或 "Your Java version is insecure"
下一篇:
Amazon 可选产品
Java 8 发行版要点说明
错误:Java 搜索到可能导致安全问题的应用程序组件。
为什么会显示 "Java Update Needed"(需要 Java Update)消息:"Your Java version is out of date"(您的 Java 版本已过期)或 "Your Java version is insecure"
在运行带有已过期证书的应用程序时,会显示什么样的其他对话框?
运行使用可信证书签名的应用程序时,为什么显示未签名的安全提示?
Java 下载内容是否会受病毒感染?
授权和分发常见问题解答
可从何处获得 Minecraft?
卸载 Java 之后,如何删除在 Windows 的“卸载/删除程序”中列出的条目?
安装 Java 期间显示“错误:25099”消息
热门内容
有关在 Mac OS X 上安装和使用 Oracle Java 的信息和系统要求
为什么应该从系统卸载 Java 的早期版本?
为什么会显示 "Java Update Needed"(需要 Java Update)消息:"Your Java version is out of date"(您的 Java 版本已过期)或 "Your Java version is insecure"
Java 8 发行版要点说明
Amazon 可选产品
什么是 Java 技术?为何需要 Java?
开发人员 - 浏览器中的 Java 内容 - 安全清单更改
错误:安装过程中出现 \bin\hotspot\jvm.dll 错误消息
更新到 macOS Sierra 10.12 后,为什么会在运行 Java 时出现问题?
Java 和 Google Chrome 浏览器