Eclipse Temurin 11.0.17 发行注记
前言 复制链接链接已复制到粘贴板!
Open Java Development Kit (OpenJDK)是 Java Platform, Standard Edition (Java SE)的一个免费的开源实现。Eclipse Temurin 在三个 LTS 版本中提供:OpenJDK 8u、OpenJDK 11u 和 OpenJDK 17u。
Eclipse Temurin 软件包在 Microsoft Windows 和多个 Linux x86 操作系统上提供,包括 Red Hat Enterprise Linux 和 Ubuntu。
提供有关红帽构建的 OpenJDK 文档的反馈 复制链接链接已复制到粘贴板!
要报告错误或改进文档,请登录到 Red Hat JIRA 帐户并提交问题。如果您没有 Red Hat Jira 帐户,则会提示您创建一个帐户。
流程
- 单击以下链接 以创建 ticket。
- 在 Summary 中输入问题的简短描述。
- 在 Description 中提供问题或功能增强的详细描述。包括一个指向文档中问题的 URL。
- 点 Submit 创建问题,并将问题路由到适当的文档团队。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。有关更多详情,请参阅我们的首席技术官 Chris Wright 提供的消息。
第 1 章 Eclipse Temurin 的支持策略 复制链接链接已复制到粘贴板!
红帽在其产品中支持所选的 Eclipse Temurin 主版本。为实现一致性,这些版本与 Oracle JDK 的长期支持(LTS)指定的版本相同。
从该版本首次引入后,Eclip Temurin 的主版本将最少提供六年的支持。如需更多信息,请参阅 Eclipse Temurin 生命周期和支持政策。
RHEL 6 于 2020 年 11 月结束其生命周期。因此,Eclip Temurin 不支持 RHEL 6 作为支持的配置。
第 2 章 Eclipse Temurin 功能 复制链接链接已复制到粘贴板!
Eclipse Temurin 不包含来自 OpenJDK 上游发行版的结构更改。
有关 Eclipse Temurin 的最新 OpenJDK 11.0.17 发行版本中包含的更改和安全修复的列表,请参阅 OpenJDK 11.0.17 发行版本。
新功能及功能增强
查看以下发行注记以了解 Eclipse Temurin 11.0.17 发行版本中包含的新功能和功能增强:
禁用 cpu.shares
参数
在 OpenJDK 11.0.17 发行版本之前,OpenJDK 使用了 cpu.shares
参数的错误解析,它属于 Linux 控制组,也称为 cgroups
。参数可能会导致 Java 虚拟机(JVM)使用比可用的 CPU 少,这可能会在容器内运行时影响 JVM 的 CPU 资源和性能。
OpenJDK 11.0.17 发行版本将 JVM 配置为在决定线程池的线程数量时不再使用 cpu.shares
参数。如果要恢复此配置,请在 JVM 启动时传递 -XX:+UseContainerCpuShares
参数。
-XX:+UseContainerCpuShares
参数是一个已弃用的功能,可能会在以后的 OpenJDK 发行版本中删除。
请参阅 JDK-8281181 (JDK Bug System)。
jdk.httpserver.maxConnections
system property
OpenJDK 11.0.17 添加了一个新的系统属性 jdk.httpserver.maxConnections
,它修复了一个安全问题,没有为 HttpServer
服务指定连接,这可能会导致接受的连接和建立的连接无限期保持打开。
您可以使用 jdk.httpserver.maxConnections
系统属性更改 HttpServer
服务,其行为如下:
-
设置
0
或负值(如-1
)来为该服务指定连接限制。 -
设置一个正值,如
1
,使服务能够根据当前已建立的连接数检查任何接受的连接。如果达到该服务的建立连接,服务会立即关闭接受的连接。
请参阅 JDK-8286918 (JDK Bug System)。
使用 JFR 监控对象的反序列化
现在,您可以使用 JDK Flight Recorder (JFR)监控对象的反序列化。默认情况下,OpenJDK 11.0.17 为 JFR 禁用 jdk.deserialization
事件设置。您可以通过更新 JFR 配置中的 event-name
元素来启用此功能。例如:
启用 JFR 并配置 JFR 以监控反序列化事件后,JFR 会在受监控的应用程序尝试反序列化对象时创建一个事件。然后,JFR 的序列化过滤器机制可以确定是否接受或拒绝被监控应用程序中的反序列化对象。
请参阅 JDK-8261160 (JDK Bug System)。
SHA-1
Signed JARs
在 OpenJDK 11.0.17 发行版本中,默认使用 SHA-1
算法签名的 JAR,并像未签名一样对待。这些限制适用于以下算法:
- 用于摘要、签名和可选时间戳的算法。
- 代码签名者和 Timestamp Authority 的证书链中的证书的签名和摘要算法,以及任何证书撤销列表(CRL)或在线证书状态协议(OCSP)响应,用于验证这些证书是否已撤销。
另外,限制适用于签名的 Java Cryptography 扩展(JCE)供应商。
要降低之前时间戳的 JAR 的兼容性风险,限制不适用于 2019 年 1 月 01
日前使用 SHA-1
算法签名的任何 JAR 和时间戳。在以后的 OpenJDK 发行版本中可能会删除此例外。
要确定您的 JAR 文件是否受到限制的影响,您可以在 CLI 中发出以下命令:
jarsigner -verify -verbose -certs
$ jarsigner -verify -verbose -certs
在上一命令的输出中,搜索 SHA1
实例、SHA-1
或 禁用
。此外,搜索指示 JAR 将被视为未签名的警告消息。例如:
考虑使用更强大的算法替换或重新签名受新限制影响的任何 JAR。
如果您的 JAR 文件受这个限制的影响,您可以删除算法并使用更强大的算法(如 SHA-256
)重新签署该文件。如果要删除 OpenJDK 11.0.17 的 SHA-1
签名 JAR 限制,并且接受安全风险,您可以完成以下操作:
-
修改
java.security
配置文件。或者,您可以保留此文件,并使用所需配置创建另一个文件。 -
从
jdk.certpath.disabledAlgorithms
安全属性中删除SHA1 使用 SignedJAR & denyAfter 2019 01 011
条目。 -
从
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)。
控制 HTTPURLConnection
的 keep-alive
行为的系统属性
OpenJDK 11.0.17 发行版本包括以下新系统属性,可用于控制 HTTPURLConnection
的 keep-alive
行为:
-
http.keepAlive.time.server
,用于控制与服务器的连接。 -
http.keepAlive.time.proxy
,用于控制到代理的连接。
在 OpenJDK 11.0.17 发行版本之前,带有未指定 keep-alive
时间的服务器或代理可能会导致闲置连接在硬编码的默认值定义的期间保持打开。
使用 OpenJDK 11.0.17,您可以使用系统属性更改 keep-alive
时间的默认值。keep-alive
属性通过更改服务器或代理的 HTTP keep-alive
时间来控制此行为,以便 OpenJDK 的 HTTP 协议处理程序在指定秒数后关闭闲置连接。
在 OpenJDK 11.0.17 发布前,以下用例会导致 HTTPURLConnection
的特定 keep-alive
行为:
-
如果服务器指定了
Connection:keep-alive
标头,并且服务器的响应包含Keep-alive:timeout=N
,则客户端上的 OpenJDKkeep-alive
缓存使用N
秒的超时时间,其中N
是整数值。 -
如果服务器指定了
Connection:keep-alive
标头,但服务器的响应不包含Keep-alive:timeout=N
的条目,则客户端上的 OpenJDKkeep-alive
缓存将使用60
秒的代理超时,5
秒用于服务器。 -
如果服务器没有指定
Connection:keep-alive
标头,则客户端上的 OpenJDKkeep-alive
缓存为所有连接使用 5 秒超时。
OpenJDK 11.0.17 发行版本维护前面描述的行为,但您现在可以使用 http.keepAlive.time. server 和
属性在第二个和第三个列出的用例中指定超时,而不必依赖默认设置。
http.keepAlive.time
.proxy
如果您设置了 keep-alive
属性,且服务器为 Keep-Alive
响应标头指定一个 keep-alive
时间,则 HTTP 协议处理程序将使用服务器指定的时间。对于代理,这个情况是相同的。
请参阅 JDK-8278067 (JDK Bug System)。
更新了默认的 PKCS libpmem MAC 算法
OpenJDK 11.0.17 更新 PKCSMemcached 密钥存储的默认消息身份验证代码(MAC)算法,以使用 SHA-256
加密哈希功能而不是 SHA-1
功能。SHA-256
功能为保护数据提供了更强大的方法。
您可以在 keystore.pkcs12.macAlgorithm
和 keystore.pkcs12.maclterationCount
系统属性中查看此更新。
如果您使用这个更新的 MAC 算法创建密钥存储,且您试图将密钥存储与 OpenJDK 11.0.12 之前的 OpenJDK 版本一起使用,您会收到 java.security.NoSuchAlgorithmException
信息。
要将之前的密钥存储与 OpenJDK 11.0.12 之前的 OpenJDK 版本搭配使用,请将 keystore.pkcs12.legacy
系统属性设置为 true
以恢复 MAC 算法。
请参阅 JDK-8267880 (JDK Bug System)。
弃用和删除的功能
查看以下发行注记以了解 OpenJDK 11.0.17 发行版本中已弃用或删除的预先存在的功能:
弃用的 Kerberos 加密类型
OpenJDK 11.0.17 弃用了 3-hmac-sha1
和 rc4-hmac
Kerberos 加密类型。默认情况下,OpenJDK 11.0.17 禁用这些加密类型,但您可以通过完成以下操作来启用它们:
-
在
krb5.conf
配置文件中,将allow_weak_crypto
选项卡设置为true
。此配置还启用其他加密类型,如des-cbc-crc
和des-cbc-md5
。
在应用此配置前,请考虑启用所有弱 Kerberos 加密类型的风险,比如在您的 Kerberos 身份验证机制中引入弱加密算法。
您可以通过在以下 krb5.conf
配置文件中明确列出加密类型来禁用弱加密类型的子集:
-
default_tkt_enctypes
-
default_tgs_enctypes
-
permitted_enctypes
请参阅 JDK-8139348 (JDK Bug System)。
更新于 2024-05-10