37 SSL/TLSプロトコル・バージョンの指定

SSL接続で有効なSSLとTLSの最低サポート・バージョンを制限するようにOracle WebLogic Serverを構成する方法を学習します。

ハンドシェイクで使用される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インストール・ディレクトリにあります。

  • -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)以降でのみ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 8 Update 261 (JDK 8u261)以降でのみTLS v1.3をサポートしています。それより前のJDKバージョンの場合は、TLS v1.2を使用する必要があります。

  • TLS v1.1が、WebLogic Serverで構成されるデフォルトの最小プロトコル・バージョンです。ただし、本番環境では、TLS v1.2以降を使用することをお薦めします。これには、weblogic.security.SSL.minimumProtocolVersionシステム・プロパティを使用します。「weblogic.security.SSL.minimumProtocolVersionシステム・プロパティの使用」を参照してください。

weblogic.security.SSL.minimumProtocolVersionシステム・プロパティの使用

本番環境では、SSL接続でメッセージを送受信するためにTLS V1.2以降(基礎となるJSSEプロバイダでサポートされている場合)を使用することをお薦めします。SSL接続に対して有効なSSL V3.0およびTLS V1の最低バージョンを制御するには、WebLogic Serverの起動時にweblogic.security.SSL.minimumProtocolVersion=protocolをコマンドライン・オプションとして設定します。

このシステム・プロパティでは、protocolに次の値のいずれかを受け入れます。

表37-1 weblogic.security.SSL.minimumProtocolVersionの値

説明

SSLv3

SSL接続で有効な最低プロトコル・バージョンとしてSSL V3.0を指定します。

TLSv1

SSL接続で有効な最低プロトコル・バージョンとしてTLS V1.0を指定します。

TLSvx.y

SSL接続で有効な最低プロトコル・バージョンとしてTLS Vx.yを指定します。ここで:

  • xは1 - 9の整数です。

  • yは0 - 9の整数です。

たとえば、TLSv1.2となります。

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 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インストール・ディレクトリにあります。

weblogic.security.ssl.sslcontext.protocolシステム・プロパティの使用

一部のJSSEプロバイダでは、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アルゴリズムを選択するためのキーです。設定されている場合、デフォルト値はオーバーライドされます。標準でサポートされている値は、SSLSSLv3TLSTLSv1TLSv1.1TLSv1.2およびTLSv1.3です。Java暗号化アーキテクチャ標準アルゴリズム名のドキュメント(JDK 8用)SSLContextアルゴリズムに関する項を参照してください。WebLogic ServerではSSLv2はサポートされません。かわりに、基礎となるJSSEプロバイダによってサポートされるカスタム値にプロパティを設定できますが、TLS接続で有効化されるSSL/TLSプロトコル・バージョンに影響する可能性があります。

ノート:

  • WebLogic Serverは、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を使用しないことを強くお薦めします。