第 3 章 Red Hat build of OpenJDK 功能


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

Red Hat build of OpenJDK 的改进

红帽构建的 OpenJDK 21 为最初在以前版本的 OpenJDK 中创建的功能提供了改进。

2024 年 11 月 11 日和由 Entrust root CA 发布的 TLS 服务器证书的不信任

根据 Google 和 Mozilla 最近宣布的类似计划,红帽构建 OpenJDK 21.0.5 信任于 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)

KEM.getInstance () 方法检查第三方安全供应商是否已签名

JDK 的加密框架通过确定供应商的代码库和验证供应商的签名来验证第三方安全供应商实施。

在早期版本中,JDK 不会验证密钥封装机制(KEM)实现。

红帽构建的 OpenJDK 21.0.5 以与其他 JDK 服务类型(如 Cipher 和 Mac 供应商)一致的方式验证 KEM 实现。

请参阅 JDK-8322971 (JDK Bug System)

减少详细区域设置输出 in -XshowSettings launcher 选项

在早期版本中,-XshowSettings launcher 选项打印了可用区域设置的长列表,这会模糊处理其他设置。

在 OpenJDK 21.0.5 中,-XshowSettings launcher 选项默认不再打印可用区域列表。如果要查看与可用区域设置相关的所有设置,您可以使用 -XshowSettings:locale 选项。

请参阅 JDK-8310201 (JDK Bug System)

java . security.debug 系统属性的额外时间戳和 线程 选项

红帽构建的 OpenJDK 21.0.5 将以下选项添加到 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)

添加 ssl.com 根证书

在 OpenJDK 21.0.5 中,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)

HTTP 客户端增强

Red Hat build of OpenJDK 21.0.5 限制 HTTP 客户端在 JDK 中针对所有支持的 HTTP 协议接受的最大标头字段大小。标头字段大小计算为未压缩标头名称的总和、未压缩标头值的大小,以及每个字段部分行的开销为 32 字节。如果对等点发送超过这个限制的字段部分,则会引发 java.net.ProtocolException

Red Hat build of OpenJDK 21.0.5 引入了 jdk.http.maxHeaderSize 系统属性,可用于更改最大标头字段大小(以字节为单位)。或者,您可以通过将 jdk.http.maxHeaderSize 属性设置为 0 或负值来禁用最大标头字段大小。jdk.http.maxHeaderSize 属性默认设置为 393,216 字节(即 384KB)。

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

ClassLoadingMXBeanMemoryMXBean 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 21.0.5 开始,class LoadingMXBean.isVerbose ()MemoryMXBean.isVerbose () 方法显示以下行为:

  • 只有当 Info 级别(或更高)在标准输出中启用了 class+load* 日志记录时,ClassLoadingMXBean::isVerbose () 才会返回 true
  • 只有在 stdout 上的 Info 级别(或更高)启用垃圾收集器日志时,MemoryMXBean::isVerbose () 才会返回 true

请参阅 JDK-8338139 (JDK Bug System)

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.