36 SSL/TLSプロトコル・バージョンの指定
ハンドシェイクで使用されるSSLバージョンについて
SSLハンドシェイクの開始時に、SSLピアは両方のピアがサポートする最も高いプロトコル・バージョンを判断します。ただし、コマンドライン・ユーティリティを使用してSSL接続で有効なSSLとTLSの最低サポート・バージョンを制限するようにWeblogic Serverを構成することもできます。
SSLハンドシェイクで有効なSSLおよびTLSのバージョンを指定するには、WebLogic Serverを起動するコマンドライン引数で次のシステム・プロパティのいずれかを設定でします。
-
weblogic.security.SSL.protocolVersion
-
weblogic.security.SSL.minimumProtocolVersion
WebLogic ServerではJSSEベースのSSL実装のみがサポートされることに注意してください。JSSEベースのSSL実装の使用を参照してください。
weblogic.security.SSL.protocolVersionシステム・プロパティの使用
SSL接続の作成時に、使用するプロトコル(SSLまたはTLS)を指定できます。互換性、SSLパフォーマンスおよびセキュリティ要件など、状況によっては、TLSを選択した方がよい場合もあります。
WebLogic Serverを起動する際にweblogic.security.SSL.protocolVersion
システム・プロパティをコマンドライン引数として使用してSSL接続に使用するプロトコルを指定します。次のコマンドライン引数を指定すると、WebLogic ServerはSSL v3.0またはTLS接続のみをサポートします。
-
-Dweblogic.security.SSL.protocolVersion=SSL3
- SSL v3.0メッセージのみが送信され、受け入れられます。クライアントが以前のバージョンのSSLで接続を確立しようとすると、WebLogic Serverによって拒否され、拒否メッセージがクライアントに返されます。ノート:
基礎となるJSSEプロバイダによる特定のJDK更新で、SSLv3がデフォルトで無効になっている可能性があります。その場合は、WebLogic ServerでSSLv3を有効にしても効果がなく、SSL接続の実行時エラーが発生することがあります。
SSLv3を使用しないことを強くお薦めします。SSLv3を使用する場合は、
java.security
ファイルで指定されているjdk.tls.disabledAlgorithms
JDK設定からSSLv3を削除してから、WebLogic ServerでSSLv3を有効にする必要があります。java.security
ファイルは、$JAVA_HOME/jre/lib/security
の下のJDK 8インストール・ディレクトリにあります。JDK 11では、このファイルは$JAVA_HOME/conf/security
の下にあります。 -
-Dweblogic.security.SSL.protocolVersion=TLS1
— このプロパティ値を指定すると、送信され受け入れられるメッセージに対して、TLSで始まるプロトコル(TLS v1.0、TLS v1.1、TLS v1.2、TLS v1.3など)が有効になります。ノート:
-
WebLogic Serverは、JDK 8 Update 261 (JDK 8u261)以降およびJDK 11でのみTLS v1.3をサポートします。それより前のバージョンのJDKでは、TLS v1.3を使用できない場合があります。
-
TLS v1.0およびv1.1のサポートは非推奨です。TLS v1.0およびv1.1を使用しないことを強くお薦めします。また、基礎となるJSSEプロバイダによる特定のJDK更新で、これらのバージョンがデフォルトで無効になっている可能性があります。
-
-
-Dweblogic.security.SSL.protocolVersion=ALL
- デフォルトの動作です。ALLが選択された場合、デフォルトはJSSEプロバイダおよびJDKバージョンによって異なります。Sun JSSEに対してサポートされているプロトコルのバージョンの一覧については、http://docs.oracle.com/javase/8/docs/technotes/guides/security/SunProviders.html#SunJSSEProvider
を参照してください。
次の点に注意してください。
-
SSL v3.0プロトコルとTLS v1プロトコルは入れ替えできません。すべての必要なSSLクライアントがTLS v1プロトコルを使用できることが確かである場合は、TLS v1プロトコルのみを使用します。
-
weblogic.security.SSL.protocolVersion
システム・プロパティを設定しないと、SSLv3Hello、SSLv3およびTLS v1プロトコルが有効になります。さらに、JSSEの場合、TLSで始まるすべてのバージョンも有効になります。 -
weblogic.security.SSL.minimumProtocolVersion
システム・プロパティにサポートされている有効なプロトコルが設定されている場合、weblogic.security.SSL.protocolVersion
で設定したプロトコル値は無視されます。
ノート:
-
このシステム・プロパティで
TLS1
またはALL
を指定すると、SSLプロバイダでサポートされているTLS v1の全バージョンがSSL接続で使用できるようになります。JSSEベースの実装では、TLS v1.0、TLS v1.1、TLS v1.2およびTLS v1.3がサポートされています。ただし、WebLogic Serverは、JDK 11およびJDK 8 Update 261 (JDK 8u261)以降でのみTLS v1.3をサポートしています。それより前のJDKバージョンの場合は、TLS v1.2を使用する必要があります。 -
TLS v1.2が、WebLogic Serverで構成されているデフォルトの最小プロトコル・バージョンです。TLSバージョンが1.2より下位に設定されている場合、WebLogic Serverによって警告がログに記録されます。
weblogic.security.SSL.minimumProtocolVersionシステム・プロパティの使用
本番環境では、SSL接続でメッセージを送受信するためにTLS v1.2以降(基礎となるJSSEプロバイダでサポートされている場合)を使用することをお薦めします。SSL接続に対して有効なSSL v3.0およびTLS v1の最低バージョンを制御するには、WebLogic Serverの起動時にweblogic.security.SSL.minimumProtocolVersion=
protocol
をコマンドライン・オプションとして設定します。
ノート:
TLS v1.2が、WebLogic Serverで構成されているデフォルトの最小プロトコル・バージョンです。TLSバージョンが1.2より下位に設定されている場合、WebLogic Serverによって警告がログに記録されます。このシステム・プロパティでは、protocol
に次の値のいずれかを受け入れます。
表36-1 weblogic.security.SSL.minimumProtocolVersionの値
値 | 説明 |
---|---|
|
SSL接続で有効な最低プロトコル・バージョンとしてSSL v3.0を指定します。 |
|
SSL接続で有効な最低プロトコル・バージョンとしてTLS v1.0を指定します。 ノート: デフォルトでは、WebLogic ServerはTLS v1.2を最低プロトコル・バージョンとして使用し、TLSバージョンが1.2未満に設定されている場合は警告をログに記録します。 |
|
SSL接続で有効な最低プロトコル・バージョンとしてTLS v
たとえば、 |
weblogic.security.SSL.minimumProtocolVersion
システム・プロパティに指定できる各値により有効になる特定のプロトコルは、WebLogic Serverが構成されるSSL実装に依存します。
JSSEベースのSSL実装で有効なプロトコルでは、これらのプロトコルを、WebLogic Serverで使用可能なJSSEベースのSSL実装について示します。
ノート:
weblogic.security.SSL.minimumProtocolVersion
システム・プロパティは、jdk.tls.client.protocols
JDKシステム・プロパティが指定されている場合、有効にできません。
JSSEベースのSSL実装で有効なプロトコル
JSSEベースのSSL実装を使用するようにWebLogic Serverが構成され、weblogic.security.SSL.minimumProtocolVersion
システム・プロパティを使用してプロトコルの最低バージョンを指定する場合、有効となる特定のSSLプロトコルおよびTLSプロトコルは、次のようにSSL実装でサポートされるプロトコルに依存します。
-
指定する特定の最低プロトコル・バージョンがサポートされている場合、WebLogic Serverはこのプロトコル・バージョンおよびサポートされるこれ以降のプロトコル・バージョンすべてを有効にします。
たとえば:
指定するプロトコル JSSEベースのSSL実装でサポートされるプロトコル 有効となるプロトコル TLSv1
SSLv3
TLSv1
TLSv1.1
TLSv1.2
TLSv1.3
TLSv1
TLSv1.1
TLSv1.2
TLSv1.3
-
指定する特定の最低プロトコル・バージョンがサポートされていない場合、Weblogic Serverは、次に低いプロトコルおよびサポートされるこれ以降のプロトコルすべてを有効にします。最も低いプロトコル・バージョンはSSLv3に制限されます。
たとえば:
指定するプロトコル JSSEベースのSSL実装でサポートされるプロトコル 有効となるプロトコル TLSv1
SSLv3
TLSv1.1
TLSv1.2
TLSv1.3
SSLv3
TLSv1.1
TLSv1.2
TLSv1.3
-
指定する最低プロトコル・バージョンがサポートされておらず、これより古い(低いバージョンの)プロトコル(SSLv3以降)がサポートされていない場合、WebLogic Serverは、サポートされているこれより新しい(高い)バージョンすべてを有効にします。通常、このケースが適用されるのはSSLv3が最小に設定されたときです。
たとえば:
指定するプロトコル JSSEベースのSSL実装でサポートされるプロトコル 有効となるプロトコル SSLv3
TLSv1
TLSv1.1
TLSv1.2
TLSv1.3
TLSv1
TLSv1.1
TLSv1.2
TLSv1.3
-
指定する特定の最低プロトコル・バージョンが無効な場合、WebLogic ServerはSSLv3とそれ以降のサポート対象プロトコル・バージョンすべてを有効にします。
たとえば:
指定するプロトコル JSSEベースのSSL実装でサポートされるプロトコル 有効となるプロトコル TSLv0
SSLv3
TLSv1
TLSv1.1
TLSv1.2
TLSv1.3
SSLv3
TLSv1
TLSv1.1
TLSv1.2
TLSv1.3
ノート:
-
WebLogic Serverは、JDK 11およびJDK 8 Update 261 (JDK 8u261)以降でのみTLS v1.3をサポートします。それより前のバージョンのJDKでは、TLS v1.3を使用できない場合があります。
-
TLS v1.0およびv1.1のサポートは非推奨です。TLS v1.0およびv1.1を使用しないことを強くお薦めします。また、基礎となるJSSEプロバイダによる特定のJDK更新で、これらのバージョンがデフォルトで無効になっている可能性があります。
-
SSLv3は、セキュリティ攻撃に対して脆弱であるため、基礎となるJSSEプロバイダによる特定のJDK更新で無効になっている可能性があります。その場合は、
weblogic.security.SSL.minimumProtocolVersion
システム・プロパティを使用してSSLv3を設定しても有効にならないことがあります。SSLv3を使用しないことを強くお薦めします。SSLv3を使用する場合は、java.security
ファイルで指定されているjdk.tls.disabledAlgorithms
JDK設定からSSLv3を削除してから、WebLogic ServerでSSLv3を有効にする必要があります。java.security
ファイルは、$JAVA_HOME/jre/lib/security
の下のJDK 8インストール・ディレクトリにあります。JDK 11では、このファイルは$JAVA_HOME/conf/security
の下にあります。
weblogic.security.ssl.sslcontext.protocolシステム・プロパティの使用
javax.net.ssl.SSLContext
アルゴリズムと最初に有効化されたSSL/TLSプロトコルとの間に相関関係があります。WebLogic Serverには、JSSEプロバイダ用のカスタムjavax.net.ssl.SSLContext
アルゴリズムを指定する機能を提供するweblogic.security.ssl.sslcontext.protocol
システム・プロパティが含まれます。Oracle JDK JSSEプロバイダで使用されるデフォルト・プロトコル設定は、TLS
です。一部のベンダーは、プロトコル・パラメータを異なる方法で解釈するため、設定を変更する必要がある場合があります。javax.net.ssl.SSLContext
設定と有効化されたSSL/TLSプロトコルとの間の相関関係については、ベンダー固有のドキュメントを参照してください。
ノート:
IBM JSSEプロバイダを使用している場合、WebLogic ServerはデフォルトのTLS
と同等のjavax.net.ssl.SSLContext
アルゴリズムを選択しようとします。
WebLogic Serverでカスタムjavax.net.ssl.SSLContext
アルゴリズムを使用する必要がある場合、次のように、コマンド・ラインでシステム・プロパティを設定できます。
-Dweblogic.security.ssl.sslcontext.protocol=protocol
protocol
パラメータは、特定のjavax.net.ssl.SSLContext
アルゴリズムを選択するためのキーです。設定されている場合、デフォルト値はオーバーライドされます。標準でサポートされている値は、SSL
、SSLv3
、TLS
、TLSv1
、TLSv1.1
、TLSv1.2
およびTLSv1.3
です。WebLogic ServerではSSLv2
はサポートされません。かわりに、基礎となるJSSEプロバイダによってサポートされるカスタム値にプロパティを設定できますが、TLS接続で有効化されるSSL/TLSプロトコル・バージョンに影響する可能性があります。次を参照してください:
- Java暗号化アーキテクチャ標準アルゴリズム名のドキュメント(JDK 8用)のSSLContextアルゴリズムに関する項
- Javaセキュリティ標準アルゴリズム名(JDK 11用)のSSLContextアルゴリズムに関する項
ノート:
-
WebLogic Serverは、JDK 11およびJDK 8 Update 261 (JDK 8u261)以降でTLS v1.3をサポートしています。それより前のJDKバージョンを実行している場合は、TLS v1.3を使用できないことがあります。
-
TLS v1.0およびv1.1のサポートは非推奨です。TLS v1.0およびv1.1を使用しないことを強くお薦めします。また、基礎となるJSSEプロバイダによる特定のJDK更新で、これらのバージョンがデフォルトで無効になっている可能性があります。
-
基礎となるJSSEプロバイダによる特定のJDK更新で、SSLv3がデフォルトで無効になっている可能性があります。SSLv3を使用しないことを強くお薦めします。