OpenJDK 17.0.5 リリースノート

OpenJDK 17

リリースノート

概要

OpenJDK 17.0.5 ドキュメントのリリースノートには、OpenJDK 17 の新機能の概要と、潜在的な既知の問題と考えられる回避策のリストが記載されています。

はじめに

OpenJDK (Open Java Development Kit) は、Java Platform Standard Edition (Java SE) のオープンソース実装です。OpenJDK の Red Hat ビルドは、OpenJDK 8u、OpenJDK 11u と OpenJDK 17u の 3 つのバージョンで利用できます。

Red Hat ビルドの OpenJDK 向けパッケージは、Red Hat Enterprise Linux および Microsoft Windows で利用でき、Red Hat Ecosystem Catalog の JDK および JRE として同梱されています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、弊社の CTO である Chris Wright のメッセージ を参照してください。

Red Hat ドキュメントへのフィードバック

弊社のドキュメントに関するご意見やご感想をお寄せください。フィードバックをお寄せいただくには、ドキュメントのテキストを強調表示し、コメントを追加できます。

本セクションでは、フィードバックの送信方法を説明します。

前提条件

  • Red Hat カスタマーポータルにログインしている。
  • Red Hat カスタマーポータルで、マルチページ HTML 形式でドキュメントを表示している。

手順

フィードバックを提供するには、以下の手順を実施します。

  1. ドキュメントの右上隅にある フィードバック ボタンをクリックして、既存のフィードバックを確認します。

    注記

    フィードバック機能は、マルチページ HTML 形式でのみ有効です。

  2. フィードバックを提供するドキュメントのセクションを強調表示します。
  3. ハイライトされたテキスト近くに表示される Add Feedback ポップアップをクリックします。

    ページの右側のフィードバックセクションにテキストボックスが表示されます。

  4. テキストボックスにフィードバックを入力し、Submit をクリックします。

    ドキュメントに関する問題が作成されます。

  5. 問題を表示するには、フィードバックビューで問題トラッカーリンクをクリックします。

第1章 OpenJDK のサポートポリシー

Red Hat は、一部の OpenJDK のメジャーバージョンをサポートします。一貫性のため、このバージョンは、長期サポート (LTS) として指定されている Oracle JDK バージョンと引き続き似ています。

Red Hat は、Red Hat が OpenJDK を初めて導入してから 6 年間、OpenJDK のメジャーバージョンに対応しています。

OpenJDK 17 は、2027 年 11 月まで、Microsoft Windows および Red Hat Enterprise Linux で対応しています。

注記

RHEL 6 のライフサイクルは 2020 年 11 月に終了します。このため、OpenJDK はサポート対象設定として RHEL 6 をサポートしません。

関連情報

OpenJDK Life Cycle and Support Policy (Red Hat Customer Portal) を参照してください。

第2章 アップストリームの OpenJDK 17 との相違点

Red Hat Enterprise Linux の OpenJDK には、OpenJDK のアップストリームディストリビューションの構造上の変更が数多く含まれています。Microsoft Windows バージョンの OpenJDK は、Red Hat Enterprise Linux の更新にできる限り従います。

以下は、Red Hat OpenJDK 17 における最も注目すべき変更の一覧です。

  • FIPS のサポート。Red Hat OpenJDK 17 は、RHEL が FIPS モードであるかどうかを自動的に検出し、そのモードで動作するように OpenJDK 17 を自動的に設定します。この変更は、Microsoft Windows 向けの OpenJDK ビルドには適用されません。
  • 暗号化ポリシーのサポート。Red Hat Open JDK 17 は、有効な暗号化アルゴリズムとキーサイズ制約のリストを RHEL システム設定から取得します。これらの設定コンポーネントは、トランスポート層セキュリティー (TLS) 暗号化プロトコル、証明書パス検証、および署名された JAR によって使用されます。さまざまなセキュリティープロファイルを設定して、安全性と互換性のバランスをとることができます。この変更は、Microsoft Windows 向けの OpenJDK ビルドには適用されません。
  • Red Hat OpenJDK on RHEL は、アーカイブ形式のサポート用の zlib、イメージのサポート用の libjpeg-turbolibpnggiflib などのネイティブライブラリーと動的にリンクします。また、RHEL はフォントのレンダリングと管理のために、Harfbuzz および Freetype に対して動的にリンクします。この変更は、Microsoft Windows 向けの OpenJDK ビルドには適用されません。
  • src.zip ファイルには、OpenJDK に同梱されるすべての JAR ライブラリーのソースが含まれます。
  • Red Hat OpenJDK on RHEL は、タイムゾーン情報のソースとして、システム全体のタイムゾーンデータファイルを使用します。
  • Red Hat OpenJDK on RHEL は、システム全体の CA 証明書を使用します。
  • Red Hat OpenJDK on Microsoft Windows には、RHEL で利用可能な最新のタイムゾーンデータが含まれています。
  • Red Hat OpenJDK on Microsoft Windows は、RHEL から入手可能な最新の CA 証明書を使用します。

関連情報

第3章 OpenJDK の機能

最新の OpenJDK 17 リリースには、新機能が含まれている可能性があります。さらに、最新リリースは、以前の Open JDK 17 リリースに由来する機能を強化、非推奨、または削除する可能性があります。

注記

その他の変更点やセキュリティー修正については、OpenJDK 17.0.5 Released を参照してください。

OpenJDK の機能強化

OpenJDK 17 では、以前のリリースの OpenJDK で作成された機能に拡張が行われました。

cpu.shares パラメーターが無効になっている

OpenJDK 17.0.5 リリースより前は、OpenJDK は、cgroups とも呼ばれる Linux コントロールグループに属する cpu.shares パラメーターの誤った解釈を使用していました。このパラメーターにより、Java 仮想マシン (JVM) が使用可能な CPU よりも少ない CPU を使用する可能性があり、コンテナー内で動作するときの JVM の CPU リソースとパフォーマンスに影響を与える可能性があります。

OpenJDK 17.0.5 リリースでは、スレッドプールのスレッド数を決定するときに cpu.shares パラメーターを使用しないように JVM が設定されます。この設定を元に戻したい場合は、JVM の起動時に -XX:+UseContainerCpuShares 引数を渡します。

注記

-XX:+UseContainerCpuShares 引数は非推奨の機能であり、将来の OpenJDK リリースで削除される可能性があります。

JDK-8281181 (JDK バグシステム) を参照してください。

SHA-1 署名 JAR

OpenJDK 17.0.5 リリースでは、SHA-1 アルゴリズムで署名された JAR はデフォルトで制限され、署名されていないかのように扱われます。これらの制限は、次のアルゴリズムに適用されます。

  • ダイジェスト、署名、およびオプションで JAR のタイムスタンプに使用されるアルゴリズム。
  • コード署名者とタイムスタンプ機関の証明書チェーン内の証明書の署名アルゴリズムとダイジェストアルゴリズム、およびそれらの証明書が失効しているかどうかを確認するために使用される証明書失効リスト (CRL) またはオンライン証明書ステータスプロトコル (OCSP) 応答。

さらに、制限は署名済みの Java Cryptography Extension (JCE) プロバイダーにも適用されます。

以前にタイムスタンプが付けられた JAR の互換性リスクを軽減するために、この制限は、SHA-1 アルゴリズムで署名され、2019 年 1 月 1 日 より前にタイムスタンプが付けられた JAR には適用されません。この例外は、将来の OpenJDK リリースで削除される可能性があります。

JAR ファイルが制限の影響を受けるかどうかを判断するには、CLI で次のコマンドを発行します。

$ jarsigner -verify -verbose -certs

前のコマンドの出力から、SHA1SHA-1、または disabled のインスタンスを検索します。さらに、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. SHA1 使用の SignedJAR & denyAfter 2019 01 011 エントリーを jdk.certpath.disabledAlgorithms セキュリティープロパティーから削除します。
  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 ファイルの設定例については、JBoss EAP for OpenShift の java.security プロパティーのオーバーライド (Red Hat カスタマーポータル) を参照してください。

JDK-8269039 (JDK バグシステム) を参照してください。

SunMSCAPI プロバイダーは、新しい Microsoft Windows キーストアタイプをサポートします

SunMSCAPI プロバイダーは、ローカル名前空間を Windows- に追加する必要がある次の Microsoft Windows キーストアタイプをサポートしています。

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

これらのタイプのいずれかを指定することにより、ローカルコンピューターの Microsoft Windows キーストアの場所へのアクセスを提供できます。これにより、ローカルシステムに保存されている証明書へのキーストアアクセスが提供されます。

JDK-6782021 (JDK バグシステム) を参照してください。

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 キープアライブ キャッシュは N 秒のタイムアウトを使用します (N は整数値)。
  • サーバーが Connection:keep-alive ヘッダーを指定しているが、サーバーの応答に Keep-alive:timeout=N のエントリーが含まれていない場合、クライアントの OpenJDK keep-alive キャッシュはプロキシーに対して 60 秒のタイムアウトを使用し、5 サーバーの秒。
  • サーバーが Connection:keep-alive ヘッダーを指定しない場合、クライアントの OpenJDK keep-alive キャッシュは、すべての接続に対して 5 秒のタイムアウトを使用します。

OpenJDK 17.0.5 リリースでは、前述の動作が維持されていますが、2 番目と 3 番目に挙げた使用例におけるタイムアウトは、デフォルトの設定に依存するのではなく、http.keepAlive.time.server および http.keepAlive.time.proxy プロパティーを使用して指定できるようになっています。

注記

keep-alive プロパティーを設定し、サーバーが Keep-Alive 応答ヘッダーの keep-alive 時間を指定した場合、HTTP プロトコルハンドラーはサーバーによって指定された時間を使用します。この状況は、プロキシーと同じです。

JDK-8278067 (JDK バグシステム) を参照してください。

第4章 本リリースに関連するアドバイザリー

以下のアドバイザリーは、本リリースに含まれるバグ修正および CVE の修正に発行されています。

改訂日時: 2022-11-05 19:57:09 +1000