第3章 Red Hat build of OpenJDK の機能
3.1. 新機能および機能拡張
本項では、本リリースで導入された新機能を説明します。また、既存の機能の変更に関する情報も含まれます。
その他の変更点やセキュリティー修正については、https://mail.openjdk.java.net/pipermail/jdk-updates-dev/2021-July/006954.html を参照してください。
3.1.1. PKCS12 キーストア生成のカスタマイズを追加
ユーザーが PKCS #12 キーストアの生成をカスタマイズできるようにする新しいシステムおよびセキュリティープロパティーが追加されました。これには、鍵の保護、証明書保護、および MacData のアルゴリズムとパラメーターが含まれます。java.security
ファイルの "PKCS12 KeyStore properties" セクションで、これらのプロパティーの詳細な説明および可能な値を見つけます。
また、SunJCE プロバイダーに、以下の SHA-2 ベースの HmacPBE アルゴリズムのサポートを追加しました。
- HmacPBESHA224
- HmacPBESHA256
- HmacPBESHA384
- HmacPBESHA512
- HmacPBESHA512/224
- HmacPBESHA512/256
詳細は、JDK-8215293 を参照してください。
3.1.2. 1024 ビットキーのある root 証明書を削除
1024 ビット RSA 公開鍵を持つ以下のルート証明書が cacerts
キーストアから削除されました。
エイリアス名: thawtepremiumserverca [jdk]
識別名: EMAILADDRESS=premium-server@thawte.com, CN=Thawte Premium Server CA, OU=Certification Services Division, O=Thawte Consulting cc, L=Cape Town, ST=Western Cape, C=ZA
エイリアス名: verisignclass2g2ca [jdk]
識別名: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 2 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
エイリアス名: verisignclass3ca [jdk]
識別名: OU=Class 3 Public Primary Certification Authority, O="VeriSign, Inc.", C=US
エイリアス名: verisignclass3g2ca [jdk]
識別名: OU=VeriSign Trust Network, OU="(c) 1998 VeriSign, Inc. - For authorized use only", OU=Class 3 Public Primary Certification Authority - G2, O="VeriSign, Inc.", C=US
エイリアス名: verisigntsaca [jdk]
識別名: CN=Thawte Timestamping CA, OU=Thawte Certification, O=Thawte, L=Durbanville, ST=Western Cape, C=ZA
詳細は、JDK-8256902 を参照してください。
3.1.3. Telia company の Sonera Class2 CA 証明書を削除
以下のルート証明書は cacerts
トラストストアから削除されました。
エイリアス名: soneraclass2ca
識別名: CN=Sonera Class2 CA, O=Sonera, C=FI
詳細は、JDK-8261361 を参照してください。
3.1.4. デフォルトの PKCS12 暗号化と MAC アルゴリズムのアップグレード
PKCS #12 キーストアで使用されるデフォルトの暗号化および MAC アルゴリズムを更新。AES-256 および SHA-256 に基づいた新しいアルゴリズムは、RC2、DESede、および SHA-1 をベースとする古いアルゴリズムよりも強力です。詳細は、java.security
ファイルの keystore.pkcs12
で始まるセキュリティープロパティーを参照してください。
互換性のために keystore.pkcs12.legacy
という名前の新しいシステムプロパティーを定義しました。アルゴリズムを元に戻して、古い弱いアルゴリズムを使用します。このプロパティーには値が定義されていません。
詳細は、JDK-8242069 を参照してください。
3.1.5. TLS Application-Layer Protocol Negotiation (ALPN) 値のエンコーディングが改善されました。
SunJSSE プロバイダーは特定の TLS ALPN 値の読み取りまたは書き込みができません。これは、API インターフェイスとして String を選択することが原因で、U+00007F (7-bit ASCII) より大きい文字をマルチバイトアレイに変換する UTF-8 文字セットでは、文書化されていない内部使用を使用しています。
ALPN 値は、ピアが必要とするネットワークバイト表現を使用して表現されるようになりました。この場合、標準の 7 ビットの ASCII ベースの文字文字列の修正は必要ありません。ただし、SunJSSE は、 8 ビット ISO_8859_1/LATIN-1 文字として文字列の文字をエンコード/デコードします。そのため、UTF-8 でエンコードした U+000007F 文字を使用するアプリケーションは、UTF-8 変換を実行するために変更する必要がある場合があります。または、Java セキュリティープロパティー jdk.tls.alpnCharset
を "UTF-8" に設定して動作を元に戻すことができます。
詳細は、JDK-8257548 を参照してください。
3.1.6. certificate_authorities
拡張のサポートを追加
certificate_authorities
拡張は、TLS 1.3 で導入されたオプションの拡張機能です。これは、認証局 (CA)、エンドポイントサポートを示し、受信エンドポイントによって証明書の選択をガイドするために使用されます。
この Red Hat build of OpenJDK リリースは、クライアントとサーバーの両方で TLS 1.3 の certificate_authorities
拡張をサポートします。この拡張はクライアント証明書の選択には常に存在しますが、サーバー証明書の選択にはオプションになります。
アプリケーションは、jdk.tls.client.enableCAExtension
システムプロパティーを true
に設定すると、サーバー証明書の選択にこの拡張を有効にできます。プロパティーのデフォルト値は false
です。
クライアントが拡張のサイズ制限よりも多くの CA を信頼する場合 (2^16 バイト未満)、拡張は有効ではありません。また、一部のサーバー実装では、ハンドシェイクメッセージを 2^14 バイトを超えることができません。そのため、jdk.tls.client.enableCAExtension
が true
に設定され、クライアントがサーバー実装の制限よりも多くの CA を信頼すると相互運用性の問題が発生する可能性があります。
詳細は、JDK-8244460 を参照してください。