Red Hat build of OpenJDK 17.0.5 发行注记

Red Hat build of OpenJDK 17

Red Hat Customer Content Services

摘要

Red Hat build of OpenJDK 17.0.5 发行注记 文档概述了红帽构建的 OpenJDK 17 中的新功能,以及潜在的已知问题列表和可能的临时解决方案。

前言

红帽构建的 OpenJDK (Open Java Development Kit)是 Java Platform, Standard Edition (Java SE)的一个免费的开源实现。红帽构建的 OpenJDK 在三个版本中提供:8u、11u 和 17u。

红帽构建的 OpenJDK 软件包在 Red Hat Enterprise Linux 和 Microsoft Windows 上提供,并作为红帽生态系统目录中的 JDK 和 JRE 提供。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

对红帽文档提供反馈

我们感谢您对我们文档的反馈。要提供反馈,您可以突出显示文档中的文本并添加注释。

本节介绍如何提交反馈。

先决条件

  • 已登陆到红帽客户门户网站。
  • 在红帽客户门户中,以多页 HTML 格式查看文档。

流程

要提供反馈,请执行以下步骤:

  1. 点文档右上角的反馈按钮查看现有的反馈。

    注意

    反馈功能仅在多页 HTML 格式中启用。

  2. 高亮标记您要提供反馈的文档中的部分。
  3. 点在高亮文本旁弹出的 Add Feedback

    文本框将在页面右侧的"反馈"部分中打开。

  4. 在文本框中输入您的反馈,然后点 Submit

    创建了一个与文档相关的问题。

  5. 要查看问题,请单击反馈视图中的问题跟踪器链接。

第 1 章 红帽构建的 OpenJDK 支持政策

红帽在其产品中支持选择版本的 OpenJDK 的主版本。为了实现一致性,这些版本与指定为长期支持 (LTS) 的 Oracle JDK 版本类似。

自首次引入该版本起,红帽构建的 OpenJDK 主版本将最少提供六年的支持。如需更多信息,请参阅 OpenJDK 生命周期和支持政策

注意

RHEL 6 于 2020 年 11 月结束其生命周期。因此,红帽构建的 OpenJDK 不支持 RHEL 6 作为支持的配置。

第 2 章 与上游 OpenJDK 17 的不同

Red Hat 在 Red Hat Enterprise Linux 中构建 OpenJDK 包含了很多来自 OpenJDK 上游发行版的结构更改。红帽构建的 Microsoft Windows 版本尝试尽快遵循 Red Hat Enterprise Linux 更新。

以下列表详细介绍了最显著的 OpenJDK 17 更改:

  • FIPS 支持。Red Hat build of OpenJDK 17 会自动检测 RHEL 是否处于 FIPS 模式,并自动配置 Red Hat build of OpenJDK 17 以在该模式下运行。此更改不适用于适用于 Microsoft Windows 的红帽构建的 OpenJDK 构建。
  • 加密策略支持。Red Hat build of OpenJDK 17 从 RHEL 系统配置获取启用的加密算法和密钥大小限制列表。这些配置组件由传输层安全(TLS)加密协议、证书路径验证和任何签名的 JAR 使用。您可以设置不同的安全配置集来平衡安全性和兼容性。此更改不适用于适用于 Microsoft Windows 的红帽构建的 OpenJDK 构建。
  • RHEL 上的红帽构建的 OpenJDK 会动态链接到原生库,如 zlib 用于归档格式支持,libjpeg-turbolibpnggiflib 用于镜像支持。RHEL 还动态链接 HarfbuzzFreetype 用于字体渲染和管理。此更改不适用于适用于 Microsoft Windows 的红帽构建的 OpenJDK 构建。
  • src.zip 文件包含红帽构建的 OpenJDK 附带的所有 JAR 库的源。
  • RHEL 上的红帽 OpenJDK 构建使用系统范围的时区数据文件作为时区信息的来源。
  • RHEL 上的红帽构建的 OpenJDK 使用系统范围的 CA 证书。
  • Microsoft Windows 上的红帽构建的 OpenJDK 包括 RHEL 的最新可用时区数据。
  • Microsoft Windows 上的红帽构建的 OpenJDK 使用 RHEL 的最新可用 CA 证书。

第 3 章 Red Hat build of OpenJDK 功能

最新的 Red Hat build of OpenJDK 17 发行版本可能包括新功能。另外,最新版本可能会增强、弃用或删除来自以前红帽构建的 OpenJDK 17 版本的功能。

注意

有关所有其他更改和安全修复,请参阅 Red Hat build of OpenJDK 17.0.5 Released

Red Hat build of OpenJDK 的改进

Red Hat build of OpenJDK 17 为最初在以前版本的 OpenJDK 版本中创建的功能提供改进。

禁用 cpu.shares 参数

在红帽构建的 OpenJDK 17.0.5 发行版本之前,红帽构建的 OpenJDK 使用了 cpu.shares 参数的不正确的解释,它属于 Linux 控制组,也称为 cgroups。参数可能会导致 Java 虚拟机(JVM)使用比可用的 CPU 少,这可能会在容器内运行时影响 JVM 的 CPU 资源和性能。

Red Hat build of OpenJDK 17.0.5 发行版本将 JVM 配置为在决定线程池的线程数量时不再使用 cpu.shares 参数。如果要恢复此配置,请在 JVM 启动时传递 -XX:+UseContainerCpuShares 参数。

注意

-XX:+UseContainerCpuShares 参数是一个已弃用的功能,可能会在以后的红帽构建的 OpenJDK 版本中删除。

请参阅 JDK-8281181 (JDK Bug System)。

SHA-1 Signed JARs

随着红帽构建的 OpenJDK 17.0.5 发行版本,默认使用 SHA-1 算法签名的 JAR,并像未签名一样对待。这些限制适用于以下算法:

  • 用于摘要、签名和可选时间戳的算法。
  • 代码签名者和 Timestamp Authority 的证书链中的证书的签名和摘要算法,以及任何证书撤销列表(CRL)或在线证书状态协议(OCSP)响应,用于验证这些证书是否已撤销。

另外,限制适用于签名的 Java Cryptography 扩展(JCE)供应商。

要降低之前时间戳的 JAR 的兼容性风险,限制不适用于 2019 年 1 月 01 日前使用 SHA-1 算法签名的任何 JAR 和时间戳。在以后的 Red Hat build of OpenJDK 发行版本中可能会删除这个例外。

要确定您的 JAR 文件是否受到限制的影响,您可以在 CLI 中发出以下命令:

$ jarsigner -verify -verbose -certs

在上一命令的输出中,搜索 SHA1 实例、SHA-1禁用。此外,搜索指示 JAR 将被视为未签名的警告消息。例如:

Signed by "CN="Signer""
Digest algorithm: SHA-1 (disabled)
Signature algorithm: SHA1withRSA (disabled), 2048-bit key

WARNING: The jar will be treated as unsigned, because it is signed with a weak algorithm that is now disabled by the security property:

jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024, DSA keySize < 1024, SHA1 denyAfter 2019-01-01

考虑使用更强大的算法替换或重新签名受新限制影响的任何 JAR。

如果您的 JAR 文件受这个限制的影响,您可以删除算法并使用更强大的算法(如 SHA-256 )重新签署该文件。如果要删除红帽构建的 OpenJDK 17.0.5 的 SHA-1 签名 JAR 限制,并接受安全风险,您可以完成以下操作:

  1. 修改 java.security 配置文件。或者,您可以保留此文件,并使用所需配置创建另一个文件。
  2. jdk.certpath.disabledAlgorithms 安全属性中删除 SHA1 使用 SignedJAR & denyAfter 2019 01 011 条目。
  3. jdk.jar.disabledAlgorithms 安全属性中删除 SHA1 denyAfter 2019-01-01 条目。
注意

java.security 文件中的 jdk.certpath.disabledAlgorithms 的值可能会被 RHEL 8 和 9 上的系统安全策略覆盖。系统安全策略使用的值可在文件 /etc/crypto-policies/back-ends/java.config 中看到,并通过在 java.security 文件中将 security.useSystemPropertiesFile 设置为 false 来禁用,或者将 -Djava.security.disableSystemPropertiesFile=true 设置为 JVM。这些值不会在此发行版本中修改,因此对于以前的红帽构建的 OpenJDK 版本,这些值保持不变。

有关配置 java.security 文件的示例,请参阅 为 OpenShift (红帽客户门户网站)覆盖 JBoss EAP 的 java.security 属性

请参阅 JDK-8269039 (JDK Bug System)。

SunMSCAPI 供应商支持新的 Microsoft Windows 密钥存储类型

SunMSCAPI 供应商支持以下 Microsoft Windows 密钥存储类型,您必须将本地命名空间附加到 Windows-

  • Windows-<local_computer_name>
  • Windows-<root_local_computer_name>
  • Windows-<current_username>
  • Windows-<root_username>

通过指定这些类型,您可以为 Microsoft Windows 密钥存储提供对本地计算机位置的访问。因此,为存储在本地系统上的证书提供密钥存储访问。

请参阅 JDK-6782021 (JDK Bug System)。

控制 HTTPURLConnectionkeep-alive 行为的系统属性

红帽构建的 OpenJDK 17.0.5 发行版本包括以下新系统属性,可用于控制 HTTPURLConnectionkeep-alive 行为:

  • http.keepAlive.time.server,用于控制与服务器的连接。
  • http.keepAlive.time.proxy,用于控制到代理的连接。

在红帽构建的 OpenJDK 17.0.5 发行版本前,带有未指定 keep-alive 时间的服务器或代理可能会导致闲置连接在由硬编码的默认值定义的周期内保持打开。

使用红帽构建的 OpenJDK 17.0.5,您可以使用系统属性更改 keep-alive 时间的默认值。keep-alive 属性通过更改服务器或代理的 HTTP keep-alive 时间来控制此行为,以便红帽构建的 OpenJDK 的 HTTP 协议处理器在指定秒数后关闭闲置连接。

在红帽构建的 OpenJDK 17.0.5 版本前,以下用例会导致 HTTPURLConnection 的特定 keep-alive 行为:

  • 如果服务器指定了 Connection:keep-alive 标头,服务器的响应包含 Keep-alive:timeout=N,则客户端上的红帽构建的 OpenJDK keep-alive 缓存使用 N 秒超时,其中 N 是整数值。
  • 如果服务器指定了 Connection:keep-alive 标头,但服务器的响应不包含 Keep-alive:timeout=N 的条目,则客户端上的红帽构建的 OpenJDK keep-alive 缓存使用 60 秒用于代理,5 秒用于服务器。
  • 如果服务器没有指定 Connection:keep-alive 标头,则客户端上的 OpenJDK keep-alive 缓存的红帽构建会对所有连接使用 5 秒的超时时间。

Red Hat build of OpenJDK 17.0.5 发行版本维护前面描述的行为,但您现在可以使用 http.keepAlive.time. server 和 http.keepAlive.time.proxy 属性指定第二个和第三个用例中的超时,而不必依赖默认设置。

注意

如果您设置了 keep-alive 属性,且服务器为 Keep-Alive 响应标头指定一个 keep-alive 时间,则 HTTP 协议处理程序将使用服务器指定的时间。对于代理,这个情况是相同的。

请参阅 JDK-8278067 (JDK Bug System)。

第 4 章 与本发行版本相关的公告

以下公告已针对程序错误修正以及本发行版本中包括的 CVE 修复:

更新于 2024-01-28

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.