第4章 Red Hat build of OpenJDK の機能
最新の Red Hat build of OpenJDK 17 には、新機能が含まれている可能性があります。さらに、最新リリースは、以前の Red Hat build of OpenJDK 17 リリースに由来する機能を強化、非推奨、または削除する可能性があります。
その他すべての変更点やセキュリティー修正は、OpenJDK 17.0.12 Released を参照してください。
Red Hat build of OpenJDK の機能強化
Red Hat build of OpenJDK 17 では、以前のリリースの Red Hat build of OpenJDK で作成された機能に拡張が行われました。
POST
のみの OCSP リクエストのフォールバックオプション
Red Hat build of OpenJDK 17 で導入された JDK-8175903 に、Online Certificate Status Protocol (OCSP)リクエストに HTTP GET
メソッドを使用するためのサポートが追加されました。この機能は、小さなリクエストに対して無条件で有効化されました。
Internet Engineering Task Force (IETF) RFC 5019 および RFC 6960 は、HTTP GET
要求の使用を明示的に許可し、推奨します。ただし、一部の OCSP レスポンダーは、これらのタイプのリクエストでは適切に機能しません。
Red Hat build of OpenJDK 17.0.12 では、JDK システムプロパティー com.sun.security.ocsp.useget
が導入されています。デフォルトでは、このプロパティーは true
に設定され、小さなリクエストに GET
リクエストを使用する現在の動作が保持されます。このプロパティーを false
に設定すると、サイズに関係なく HTTP POST
リクエストのみが使用されます。
POST
のみの OCSP リクエストのこのフォールバックオプションは標準以外の機能です。これは、OCSP レスポンダーで HTTP GET
要求を使用して問題が発生しなくなった場合に、今後のリリースで削除される可能性があります。
JDK-8307990 (JDK Bug System) を参照してください。
TLS 1.3 は、デフォルトでは無効になっています。
OpenJDK 9 では、Datagram Transport Layer Security (DTLS)プロトコルのバージョン 1.0 とバージョン 1.2 (JEP-219)の両方のサポートが追加されました。TLS 1.1 に基づく DTLSv1.0 は、このプロトコルは弱いと見なされ、最新の標準によって安全ではないと見なされるため、使用は推奨されなくなりました。Red Hat build of OpenJDK 17.0.12 では、DTLSv1.0 を使用しようとすると、JDK はデフォルトで SSLHandshakeException
を出力します。
DTLSv1.0 を引き続き使用する場合は、java.security 設定ファイルを変更するか、java.security
.properties システムプロパティーを使用すると、jdk.tls.disabledAlgorithms
システム プロパティーから
0 を削除できます。
DTLSv1
.
DTLSv1.0 の使用は推奨されず、ユーザー自身のリスクになります。
JDK-8307990 (JDK Bug System) を参照してください。
内部 JDK バイナリーの $ORIGIN
ランタイム検索パスの RUNPATH
よりも推奨される RPATH
JDK のネイティブ実行可能ファイルおよびライブラリーは、埋め込みランタイム検索パス(rpath)を使用して、必要な内部 JDK ネイティブライブラリーを見つけます。Linux システムでは、バイナリーは DT_RPATH
または DT_RUNPATH
を使用してこれらの検索パスを指定できます。
-
DT_RPATH
を使用してバイナリーが検索パスを指定する場合、これらのパスはLD_LIBRARY_PATH
環境変数に指定されたパスの 前 に検索されます。 -
バイナリーが
DT_RUNPATH
を使用して検索パスを指定する場合、これらのパスはLD_LIBRARY_PATH
で指定されているパスの 後 にのみ検索されます。つまり、DT_RUNPATH
を使用すると、LD_LIBRARY_PATH
で指定されている同じ名前のライブラリーで JDK 内部ライブラリーを上書きでき、セキュリティーの観点からは望ましくないことになります。
以前のリリースでは、使用されるランタイム検索パスのタイプは、動的リンカーのデフォルトの検索パスに基づいていました。Red Hat build of OpenJDK 17.0.12 では、DT_RPATH
が使用されていることを確認するために、DT_RPATH オプションが明示的にリンカーに渡されます。
JDK-8307990 (JDK Bug System) を参照してください。
製品スイッチとして利用できる TrimNativeHeapInterval
オプション
Red Hat build of OpenJDK 21.0.3 では、公式の製品スイッチとして -XX:TrimNativeHeapInterval=ms
オプションが提供されます。この機能強化により、JVM はサポートされているプラットフォーム上で指定された間隔 (ミリ秒単位) でネイティブヒープをトリミングできるようになります。現在、この機能強化がサポートされているプラットフォームは、glibc
を搭載した Linux のみです。
TrimNativeHeapInterval=0
を設定するとトリミングを無効にすることができます。トリミング機能はデフォルトで無効になっています。
JDK-8325496 (JDK Bug System) を参照してください。
-XshowSettings
ランチャーオプションには セキュリティー
カテゴリーが含まれています
Red Hat build of OpenJDK 17.0.12 では、-XshowSettings
launcher オプションにセキュリティーカテゴリーが含まれており、次の引数を渡すことができます。
引数 | 詳細 |
---|---|
または
| すべてのセキュリティー設定を表示し、続行します。 |
| セキュリティープロパティーを表示し、続行します。 |
| 静的なセキュリティープロバイダーの設定を表示し、続行します。 |
| TLS 関連のセキュリティー設定を表示し、続行します。 |
サードパーティーのセキュリティープロバイダーがアプリケーションクラスパスまたはモジュールパスに含まれ、java.security
ファイルで設定されている場合、出力にはこれらのサードパーティーのセキュリティープロバイダーが含まれます。
JDK-8307990 (JDK Bug System) を参照してください。
GlobalSign R46 および E46 ルート証明書が追加されました
Red Hat build of OpenJDK 17.0.12 では、cacerts
トラストストアに 2 つの GlobalSign TLS ルート証明書が含まれています。
- 証明書 1
- 名前:GlobalSign
- エイリアス名:globalsignr46
- 識別名:CN=GlobalSign Root R46, O=GlobalSign nv-sa, C=BE
- 証明書 2
- 名前:GlobalSign
- エイリアス名:globalsigne46
- 識別名:CN=GlobalSign Root E46, O=GlobalSign nv-sa, C=BE
JDK-8307990 (JDK Bug System) を参照してください。
コードルートスキャン
フェーズ中の不均衡な反復が原因で、ガベッジコレクションの一時停止期間が長い問題が修正されました。
ガベッジコレクションの コードルートスキャン
フェーズは、コンパイルされたコード内の Java オブジェクトへの参照を見つけます。このプロセスの速度を上げるために、キャッシュは、Java ヒープへの参照が含まれるコンパイルコードの各リージョン内で維持されます。
参照のセットが小さいと仮定すると、以前のリリースはリージョンごとに単一のスレッドを使用してこれらの参照を繰り返し処理しました。このシングルスレッドアプローチでは、スケーラビリティーのボトルネックが発生し、特定のリージョンに多数の参照が含まれる場合にパフォーマンスが低下する可能性があります。
Red Hat build of OpenJDK 17.0.12 では、複数のスレッドが使用され、スケーラビリティーのボトルネックを取り除くのに役立ちます。
JDK-8307990 (JDK Bug System) を参照してください。
Windows での AWT ヘッドレスモード検出の動作の変更
以前のリリースでは、java.awt.headless
システムプロパティーが true
に設定されていない限り、Windows Server プラットフォームで java.awt.GraphicsEnvironment.isHeadless ()
への呼び出しが false
を返していました。
Red Hat build of OpenJDK 17.0.12 以降では、java.awt.headless
プロパティーが明示的に false
に設定され、実行時に現在のシステムで有効なモニターが検出されない場合、Windows Server プラットフォームでは java.awt.GraphicsEnvironment.isHeadless ()
への呼び出しが true
を返します。たとえば、セッションがサービスまたは PowerShell リモーティングによって開始された場合など、有効なモニターが検出されない可能性があります。
この動作のこの変更は、以前は先頭的なコンテキストで実行されると予想されていたこれらの条件で実行されているアプリケーションが、Abstract Window Toolkit (AWT)操作によって予期しない HeadlessException
エラーが発生する可能性があることを意味します。
java.awt.headless
プロパティーを false
に設定すると、古い動作を元に戻すことができます。ただし、アプリケーションがヘッドモードで実行されていて、有効な表示が利用できない場合、これらのアプリケーションは予期しない問題が発生し続ける可能性があります。
JDK-8307990 (JDK Bug System) を参照してください。