Red Hat build of OpenJDK 17.0.13 发行注记
摘要
前言
Open Java Development Kit (OpenJDK)是 Java Platform, Standard Edition (Java SE)的一个免费的开源实现。红帽构建的 OpenJDK 有四个版本:8u、11u、17u 和 21u。
红帽构建的 OpenJDK 软件包在 Red Hat Enterprise Linux 和 Microsoft Windows 上提供,并作为红帽生态系统目录中的 JDK 和 JRE 提供。
提供有关红帽构建的 OpenJDK 文档的反馈
要报告错误或改进文档,请登录您的红帽 JIRA 帐户并提交问题。如果您没有红帽 JIRA 帐户,系统会提示您创建一个帐户。
流程
- 单击以下链接 来创建 ticket。
- 在 Summary 中输入有关此问题的简单描述。
- 提供有关 描述 中问题或增强功能的详细描述。包括一个 URL,以在文档中发生问题。
- 点 Create 创建并将问题路由到适当的文档团队。
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 红帽构建的 OpenJDK 支持政策
红帽在其产品中支持所选的 Red Hat build of OpenJDK 主版本。为了实现一致性,这些版本与指定为长期支持 (LTS) 的 Oracle JDK 版本类似。
自首次推出该版本时,红帽构建的 OpenJDK 的主版本将最少提供六年。如需更多信息,请参阅 OpenJDK 生命周期和支持政策
RHEL 6 于 2020 年 11 月结束其生命周期。因此,红帽构建的 OpenJDK 不支持 RHEL 6 作为支持的配置。
第 2 章 与上游 OpenJDK 17 的不同
Red Hat build of OpenJDK 在 Red Hat Enterprise Linux 中包含了来自 OpenJDK 上游发行版的许多结构更改。红帽构建的 OpenJDK 版本尝试尽快遵循 Red Hat Enterprise Linux 更新。
以下列表详细介绍了红帽构建的 OpenJDK 17 更改:
- FIPS 支持。Red Hat build of OpenJDK 17 会自动检测 RHEL 是否处于 FIPS 模式,并自动配置红帽构建的 OpenJDK 17 以在该模式下运行。此更改不适用于针对 Microsoft Windows 的红帽构建的 OpenJDK 构建。
- 加密策略支持。Red Hat build of OpenJDK 17 从 RHEL 系统配置获取启用的加密算法和密钥大小限制列表。这些配置组件由传输层安全(TLS)加密协议、证书路径验证和任何签名的 JAR 使用。您可以设置不同的安全配置集来平衡安全性和兼容性。此更改不适用于针对 Microsoft Windows 的红帽构建的 OpenJDK 构建。
-
在 RHEL 上构建 OpenJDK 会动态链接到原生库,如
zlib
用于归档格式支持,libjpeg-turbo
、libpng
和giflib
用于镜像支持。RHEL 还动态链接Harfbuzz
和Freetype
用于字体渲染和管理。此更改不适用于针对 Microsoft Windows 的红帽构建的 OpenJDK 构建。 -
src.zip
文件包含由红帽构建的 OpenJDK 附带的所有 JAR 库的源。 - Red Hat build of OpenJDK on RHEL 使用系统范围的时区数据文件作为时区信息的源。
- RHEL 上的红帽构建的 OpenJDK 使用系统范围的 CA 证书。
- Red Hat build of OpenJDK on Microsoft Windows 包括 RHEL 的最新可用时区数据。
- Red Hat build of OpenJDK on Microsoft Windows 使用 RHEL 的最新可用 CA 证书。
其他资源
第 3 章 Red Hat build of OpenJDK 功能
最新的 Red Hat build of OpenJDK 17 发行版本可能包括新功能。另外,最新版本可能会增强、弃用或删除来自以前红帽构建的 OpenJDK 17 版本的功能。
Red Hat build of OpenJDK 的改进
Red Hat build of OpenJDK 17 为最初在以前的 Red Hat build OpenJDK 版本中创建的功能提供改进。
修复 jpackage
工具,在 Debian Linux 上生成软件包不准确列表
在早期版本中,在 Debian Linux 平台上,jpackage
工具可能会生成不准确的共享库中带有符号链接的所需软件包列表。
红帽构建的 OpenJDK 17.0.13 解决了这个问题,以消除缺少共享库的安装失败。
请参阅 JDK-8295111 (JDK Bug System)。
TLS_ECDH27:2.7 密码套件默认是禁用的
TLS Elliptic-curve Diffie-Hellman (TLS_ECDH)密码套件不会保留转发保密,且很少使用。红帽构建的 OpenJDK 17.0.13 通过在 java.security
配置文件中的 jdk.tls.disabledAlgorithms
安全属性中添加 ECDH
选项来禁用 TLS_ECDH 密码套件。如果您尝试使用 TLS_ECDH 密码套件,红帽构建的 OpenJDK 现在会抛出 SSLHandshakeException
错误。
如果要继续使用 TLS_ECDH 密码套件,您可以通过修改 java.security
. properties 系统属性或从
安全属性中删除 jdk.tls.
disabledAlgorithmsECDH
。
继续使用 TLS_ECDH 密码套件的风险自负。
使用 RC4 的 ECDH 密码套件在早期版本中被禁用。这个更改不会影响 TLS_ECDHE 密码套件,该套件默认保持启用。
请参阅 JDK-8279164 (JDK Bug System)。
2024 年 11 月 11 日和由 Entrust root CA 发布的 TLS 服务器证书的不信任
根据 Google 和 Mozilla 最近宣布的类似计划,红帽构建的 OpenJDK 17.0.13 信任于 2024 年 11 月 11 日和由 Entrust root 证书颁发机构(CA)发布的 TLS 证书。这个行为的变化包括任何品牌为 AffirmTrust 的证书,这些证书由 Entrust 管理。
Red Hat build of OpenJDK 将继续信任在 2024 年 11 月 11 日或以前发布的证书,直到这些证书过期。
如果服务器的证书链由受影响的证书决定,则任何尝试协商 TLS 会话现在都会失败,但表明信任锚不被信任。例如:
TLS server certificate issued after 2024-11-11 and anchored by a distrusted legacy Entrust root CA: CN=Entrust.net CertificationAuthority (2048), OU=(c) 1999 Entrust.net Limited,OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.),O=Entrust.net
您可以使用以下 keytool
命令检查此更改是否影响 JDK 密钥存储中的证书:
keytool -v -list -alias <your_server_alias> -keystore <your_keystore_filename>
如果此更改会影响链中的任何证书,请更新此证书或联系负责管理证书的机构。
如果要继续使用 Entrust root 证书选择的 TLS 服务器证书,您可以通过修改 java.security
. properties
系统属性或从 jdk.security.caDistrustPolicies
安全属性中删除 ENTRUST_TLS
。
继续使用不信任的 TLS 服务器证书的风险自有风险。
这些限制适用于 Red Hat build of OpenJDK 的以下 Entrust root 证书,其中包括:
- 证书 1
- Alias name: entrustevca [jdk]
- 区分名称: CN=Entrust Root Certification Authority, OU=(c) 2006 Entrust, Inc., OU=www.entrust.net/CPS 由参考, O=Entrust, Inc., C=US
- SHA256: 73:C1:76:43:4F:1B:C6:D5:AD:F4:5B:0E:76:E7:27:28:7C:8D:E5:76:16:C1:E6:E6:14:1A:2B:2C:BC:7D:8E:4C
- 证书 2
- Alias name: entrustrootcaec1 [jdk]
- 区分名称: CN=Entrust Root Certification Authority - EC1, OU=(c) 2012 Entrust, Inc. - 仅授权使用,OU=See www.entrust.net/legal-terms, O=Entrust, Inc., C=US
- SHA256: 02:ED:0E:B2:8C:14:DA:45:16:5C:56:67:91:70:0D:64:51:D7:FB:56:F0:B2:AB:1D:3B:8E:B0:70:E5:6E:DF:F5
- 证书 3
- Alias name: entrustrootcag2 [jdk]
- 区分名称: CN=Entrust Root Certification Authority - G2, OU=(c) 2009 Entrust, Inc. - 仅授权使用,OU=See www.entrust.net/legal-terms, O=Entrust, Inc., C=US
- SHA256: 43:DF:57:74:B0:3E:7F:EF:5F:E4:0D:93:1A:7B:ED:F1:BB:2E:6B:42:73:8C:4E:6D:38:41:10:3D:3A:A7:F3:39
- 证书 4
- Alias name: entrustrootcag4 [jdk]
- 区分名称: CN=Entrust Root Certification Authority - G4, OU=(c) 2015 Entrust, Inc. - 仅授权使用,OU=See www.entrust.net/legal-termsO=Entrust, Inc., C=US
- SHA256: DB:35:17:D1:F6:73:2A:2D:5A:B9:7C:53:3E:C7:07:79:EE:32:70:A6:2F:B4:AC:42:38:37:24:60:E6:F0:1E:88
- 证书 5
- Alias name: entrust2048ca [jdk]
- 区分名称: CN=Entrust.net Certification Authority (2048), OU=(c) 1999 Entrust.net Limited, OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.), O=Entrust.net
- SHA256: 6D:C4:71:72:E0:1C:BC:B0:BF:62:58:0D:89:5F:E2:B8:AC:9A:D4:F8:73:80:1E:0C:10:B9:C8:37:D2:1E:B1:77
- 证书 6
- Alias name: affirmtrustcommercialca [jdk]
- distinguished name: CN=AffirmTrust Commercial, O=AffirmTrust, C=US
- SHA256: 03:76:AB:1D:54:C5:F9:80:3C:E4:B2:E2:01:A0:EE:7E:EF:7B:57:B6:36:E8:A9:3C:9B:8D:48:60:C9:6F:5F:A7
- 证书 7
- Alias name: affirmtrustnetworkingca [jdk]
- distinguished name: CN=AffirmTrust Networking, O=AffirmTrust, C=US
- SHA256: 0A:81:EC:5A:92:97:77:F1:45:90:4A:F3:8D:5D:50:9F:66:B5:E2:C5:8F:CD:B5:31:05:8B:0E:17:F3:F0B4:1B
- 证书 8
- Alias name: affirmtrustpremiumca [jdk]
- distinguished name: CN=AffirmTrust Premium, O=AffirmTrust, C=US
- SHA256: 70:A7:3F:7F:37:6B:60:07:42:48:90:45:34:B1:14:82:D5:BF:0E:69:8E:CC:49:8D:F5:25:77:EB:F2:E9:3B:9A
- 证书 9
- Alias name: affirmtrustpremiumeccca [jdk]
- distinguished name: CN=AffirmTrust Premium ECCO=AffirmTrust, C=US
- SHA256: BD:71:FD:F6:DA:97:E4:CF:62:D1:64:7A:DD:25:81:B0:7D:79:AD:F8:39:7E:B4:EC:BA:9C:5E:84:88:82:14:23
请参阅 JDK-8337664 (JDK Bug System) 和 JDK-8341059 (JDK Bug System)。
减少详细区域设置输出 in -XshowSettings
launcher 选项
在早期版本中,-XshowSettings
launcher 选项打印了可用区域设置的长列表,这会模糊处理其他设置。
在 OpenJDK 17.0.13 中,-XshowSettings
launcher 选项默认不再打印可用区域列表。如果要查看与可用区域设置相关的所有设置,您可以使用 -XshowSettings:locale
选项。
请参阅 JDK-8310201 (JDK Bug System)。
添加 ssl.com 根证书
在 OpenJDK 17.0.13 中,cacerts
truststore 包括两个 SSL.com TLS 根证书:
- 证书 1
- 名称:SSL.com
- 别名名称:ssltlsrootecc2022
- 区分名称: CN=SSL.com TLS ECC Root CA 2022, O=SSL Corporation, C=US
- 证书 2
- 名称:SSL.com
- 别名名称:ssltlsrootrsa2022
- distinguished name: CN=SSL.com TLS RSA Root CA 2022, O=SSL Corporation, C=US
请参阅 JDK-8341057 (JDK Bug System)。
java .
security.debug
系统属性的额外时间戳和 线程
选项
.
security.debug
Red Hat build of OpenJDK 17.0.13 将以下选项添加到 java.security.debug
属性中,该属性可应用于任何指定的组件:
-
+timestamp
选项打印带有每个 debug 语句的时间戳。 -
+thread
选项打印每个 debug 语句的线程和调用者信息。
例如,-Djava.security.debug=all+timestamp+thread
为带有时间戳和线程信息的所有组件启用调试信息。或者,-Djava.security.debug=properties+timestamp
仅为安全属性启用调试信息,并包括一个时间戳。您可以使用 -Djava.security.debug=help
显示支持的组件和选项的完整列表。
请参阅 JDK-8051959 (JDK Bug System)。
Java Abstract 窗口工具包(AWT) Robot 规格
Red Hat build of OpenJDK 17.0.13 基于 Java 17 规范的最新维护发行版本。此发行版本在 java.awt.Robot
类中调整以下三种方法规格:
-
mouseMove(int,int)
-
getPixelColor(int,int)
-
createScreenCapture(Rectangle)
这种规格放松允许这些方法在桌面环境不允许移动鼠标指针或捕获屏幕内容时失败。
请参阅 JDK-8307779 (JDK Bug System)。
对 com.sun.jndi.ldap.object.trustSerialData
系统属性的更改
LDAP 供应商的 JDK 实施默认不再支持 Java 对象的反序列化。
在 OpenJDK 17.0.13 中,com.sun.jndi.ldap.object.trustSerialData
系统属性默认设置为 false
。此发行版本还增加 com.sun.jndi.ldap.object.trustSerialData
属性的范围,以覆盖 javaRemoteLocation
LDAP 属性中的 RMI 远程对象的重新构建。
这些更改意味着,Java 对象透明序列化需要明确选择。从 OpenJDK 17.0.13 开始,如果要允许应用程序从 LDAP 属性重建 Java 对象和 RMI 存根,则必须明确将 com.sun.jndi.ldap.object.trustSerialData
属性设置为 true
。
请参阅 JDK-8290367 (JDK Bug System) 和 JDK-8332643 (JDK Bug System)。
HTTP 客户端增强
Red Hat build of OpenJDK 17.0.13 限制 HTTP 客户端在 JDK 中针对所有支持的 HTTP 协议接受的最大标头字段大小。标头字段大小计算为未压缩标头名称的总和、未压缩标头值的大小,以及每个字段部分行的开销为 32 字节。如果对等点发送超过这个限制的字段部分,则会引发 java.net.ProtocolException
。
Red Hat build of OpenJDK 17.0.13 引入了 jdk.http.maxHeaderSize
系统属性,可用于更改最大标头字段大小(以字节为单位)。或者,您可以通过将 jdk.http.maxHeaderSize
属性设置为 0 或负值来禁用最大标头字段大小。jdk.http.maxHeaderSize
属性默认设置为 393,216 字节(即 384KB)。
请参阅 JDK-8328286 (JDK Bug System)。
ClassLoadingMXBean
和 MemoryMXBean
API 具有与 setVerbose ()
方法一致的 isVerbose ()
方法
ClassLoadingMXBean
API 的 setVerbose (布尔值)
方法显示以下行为:
-
如果启用
为true
,则setVerbose
方法在Info
级别设置标准输出(stdout)的class+load*
日志记录。 -
如果启用
为false
,则setVerbose
方法在 stdout 中禁用class+load*
日志记录。
在早期版本中,class LoadingMXBean
API 的 isVerbose ()
方法检查是否在任何类型的日志输出上启用了 class+load
日志记录,而不只是 stdout。在这种情况下,如果您使用
java -Xlog
选项启用对文件的日志,则 isVerbose ()
方法返回 true
,即使调用 setVerbose (false)
,这会导致计数器行为。MemoryMXBean
API 的 isVerbose ()
方法也显示类似的计数器行为。
从 OpenJDK 17.0.13 开始,class LoadingMXBean.isVerbose ()
和 MemoryMXBean.isVerbose ()
方法显示以下行为:
-
只有当
Info
级别(或更高)在标准输出中启用了class+load*
日志记录时,ClassLoadingMXBean::isVerbose ()
才会返回true
。 -
只有在 stdout 上的
Info
级别(或更高)启用垃圾收集器日志时,MemoryMXBean::isVerbose ()
才会返回true
。
请参阅 JDK-8338139 (JDK Bug System)。
密钥封装机制 API
Red Hat build of OpenJDK 17.0.13 引入了一个用于密钥封装机制(KEM)的 javax.crypto
API。KEM 是使用公钥加密保护对称密钥的加密技术。javax.crypto
API 便于使用公钥加密,有助于在处理机密和消息时提高安全性。
请参阅 JDK-8297878 (JDK Bug System)。
Windows 构建工件的命名规则的更改
此发行版本引入了一些作为 Red Hat build of OpenJDK 17 for Windows Server 平台一部分的文件命名更改。
这些文件命名更改会影响红帽为 OpenJDK 17 构建的 JDK、JRE 和 debuginfo
软件包提供的 .zip
归档和 .msi
安装程序。
这个变化的目的是采用一个通用命名惯例,它在红帽目前支持的不同版本的 OpenJDK 中保持一致。这意味着,红帽构建的 OpenJDK 17 与红帽已经为 OpenJDK 21 构建的命名惯例一致。
这些更改不会影响 Linux 可移植构建的文件。
以下列表提供了这些命名更改对 Red Hat build of OpenJDK 17 中的文件的影响示例:
JDK 软件包的 MSI 安装程序
红帽构建的 OpenJDK 17.0.12 或更早版本的旧命名格式:
java-17-openjdk-<version>.<build>.win.x86_64.msi
红帽构建的 OpenJDK 17.0.13 或更高版本的新命名格式:
java-17-openjdk-<version>.<build>.win.jdk.x86_64.msi
JDK 软件包的
.zip
归档红帽构建的 OpenJDK 17.0.12 或更早版本的旧命名格式:
java-17-openjdk-<version>.<build>.win.x86_64.zip
红帽构建的 OpenJDK 17.0.13 或更高版本的新命名格式:
java-17-openjdk-<version>.<build>.win.jdk.x86_64.zip
JRE 软件包的 MSI 安装程序
红帽构建的 OpenJDK 17.0.12 或更早版本的旧命名格式:
java-17-openjdk-<version>.<build>.jre.win.x86_64.msi
红帽构建的 OpenJDK 17.0.13 或更高版本的新命名格式:
java-17-openjdk-<version>.<build>.win.jre.x86_64.msi
JRE 软件包的
.zip
归档红帽构建的 OpenJDK 17.0.12 或更早版本的旧命名格式:
java-17-openjdk-<version>.<build>.jre.win.x86_64.zip
红帽构建的 OpenJDK 17.0.13 或更高版本的新命名格式:
java-17-openjdk-<version>.<build>.win.jre.x86_64.zip
debuginfo
软件包的.zip
归档红帽构建的 OpenJDK 17.0.12 或更早版本的旧命名格式:
java-17-openjdk-<version>.<build>.win.x86_64.debuginfo.zip
红帽构建的 OpenJDK 17.0.13 或更高版本的新命名格式:
java-17-openjdk-<version>.<build>.win.debuginfo.x86_64.zip
第 4 章 与本发行版本相关的公告
以下公告包括了记录程序错误修复和 CVE 修复:
更新于 2024-10-19