SSLハンドシェイクの開始時に、SSLピアは両方のピアがサポートする最も高いプロトコル・バージョンを判断します。ただし、コマンドライン・ユーティリティを使用してSSL接続で有効なSSLとTLSの最低サポート・バージョンを制限するようにWeblogic Serverを構成することもできます。
SSLハンドシェイクで有効なSSLおよびTLSのバージョンを指定するには、WebLogic Serverを起動するコマンドライン引数で次のシステム・プロパティのいずれかを設定でします。
weblogic.security.SSL.protocolVersion
weblogic.security.SSL.minimumProtocolVersion
WebLogic ServerでのSSLプロトコル・サポートについて、次の点に注意してください。
JSSEベースのSSL実装が有効な場合(「JSSEベースSSL実装の使用」を参照)、SSLプロトコル・サポートはインストールされているJSSEプロバイダに依存します。
WebLogic ServerがSSLサーバーとして動作する場合、サポートされていれば、クライアントのハロー・メッセージで指定された方のプロトコルになります。
ノート:
12.1.3よりも前のWebLogic Serverバージョンでは、クライアントがSSLv2Helloを送信すると、WebLogic ServerがそれをSSLv3Helloに変換しました。ただし、WebLogic Server 12.2.1.1.0ではJDK 8のみがサポートされ(クライアントはJDK 7または8を使用できる)、SSLv2Helloプロトコルはサポートされません。
つまり、SSLv2Helloを送信するクライアントは、バージョン12.2.1.1.0のWebLogic Serverに接続することができません。クライアントはSSLv3Helloを送信する必要があります。
weblogic.security.SSL.protocolVersion=SSL3を設定して、クライアントがSSLv3Helloを送信するように強制します。
WebLogic ServerはSSL V2.0をサポートしていません。
SSL接続の作成時に、使用するプロトコル(SSLまたはTLS)を指定できます。互換性、SSLパフォーマンスおよびセキュリティ要件など、状況によっては、TLS V1を選択した方がよい場合もあります。
WebLogic Serverを起動する際にweblogic.security.SSL.protocolVersionシステム・プロパティをコマンドライン引数として使用してSSL接続に使用するプロトコルを指定します。次のコマンド・ライン引数を指定すると、WebLogic ServerはSSL V3.0またはTLS接続のみをサポートします。
-Dweblogic.security.SSL.protocolVersion=SSL3 - SSL V3.0のメッセージのみが送信されて受理されます。クライアントが以前のバージョンのSSLで接続を確立しようとすると、WebLogic Serverによって拒否され、拒否メッセージがクライアントに返されます。
-Dweblogic.security.SSL.protocolVersion=TLS1— このプロパティ値により、送信され受け入れられるメッセージに対し、TLSで始まるプロトコル(TLS V1.0、TLS V1.1、TLS V1.2など)が有効になります。
-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プロトコルのみを使用します。
weblogic.security.SSL.protocolVersionシステム・プロパティを設定しないと、SSLv3Hello、SSLv3およびTLSv1のプロトコルが有効になります。さらに、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.1が、WebLogic Serverで構成されるデフォルトの最小プロトコル・バージョンです。本番環境ではTLS V1.1以降を使用することをお薦めします。これはweblogic.security.SSL.minimumProtocolVersionシステム・プロパティにより使用可能です。「weblogic.security.SSL.minimumProtocolVersionシステム・プロパティの使用」を参照してください。
本番環境では、SSL接続でのメッセージの送受信にTLS V1.1以降をお薦めします。SSL接続に対して有効なSSL V3.0およびTLS V1の最低バージョンを制御するには、WebLogic Serverの起動時にweblogic.security.SSL.minimumProtocolVersion=protocolをコマンドライン・オプションとして設定します。
このシステム・プロパティでは、protocolに次の値のいずれかを受け入れます。
| 値 | 説明 |
|---|---|
SSLv3 |
SSL接続で有効な最低プロトコル・バージョンとしてSSL V3.0を指定します。 |
TLSv1 |
SSL接続で有効な最低プロトコル・バージョンとしてTLS V1.0を指定します。 |
TLSvx.y
|
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実装を使用するようにWebLogic Serverが構成され、weblogic.security.SSL.minimumProtocolVersionシステム・プロパティを使用してプロトコルの最低バージョンを指定する場合、有効となる特定のSSLプロトコルおよびTLSプロトコルは、次のようにSSL実装でサポートされるプロトコルに依存します。
指定する特定の最低プロトコル・バージョンがサポートされている場合、WebLogic Serverはこのプロトコル・バージョンおよびサポートされるこれ以降のプロトコル・バージョンすべてを有効にします。
たとえば:
| 指定するプロトコル | JSSEベースのSSL実装でサポートされるプロトコル | 有効となるプロトコル |
|---|---|---|
TLSv1 |
SSLv3 TLSv1 TLSv1.1 TLSv1.2 |
TLSv1 TLSv1.1 TLSv1.2 |
指定する特定の最低プロトコル・バージョンがサポートされていない場合、Weblogic Serverは、次に低いプロトコルおよびサポートされるこれ以降のプロトコルすべてを有効にします。最も低いプロトコル・バージョンはSSLv3に制限されます。
たとえば:
| 指定するプロトコル | JSSEベースのSSL実装でサポートされるプロトコル | 有効となるプロトコル |
|---|---|---|
TLSv1 |
SSLv3 TLSv1.1 TLSv1.2 |
SSLv3 TLSv1.1 TLSv1.2 |
指定する最低プロトコル・バージョンがサポートされておらず、これより古い(低いバージョンの)プロトコル(SSLv3以降)がサポートされていない場合、WebLogic Serverは、サポートされているこれより新しい(高い)バージョンすべてを有効にします。通常、このケースが適用されるのはSSLv3が最小に設定されたときです。
たとえば:
| 指定するプロトコル | JSSEベースのSSL実装でサポートされるプロトコル | 有効となるプロトコル |
|---|---|---|
SSLv3 |
TLSv1 TLSv1.1 TLSv1.2 |
TLSv1 TLSv1.1 TLSv1.2 |
指定する特定の最低プロトコル・バージョンが無効な場合、WebLogic ServerはSSLv3とそれ以降のサポート対象プロトコル・バージョンすべてを有効にします。
たとえば:
| 指定するプロトコル | JSSEベースのSSL実装でサポートされるプロトコル | 有効となるプロトコル |
|---|---|---|
TSLv0 |
SSLv3 TLSv1 TLSv1.1 TLSv1.2 |
SSLv3 TLSv1 TLSv1.1 TLSv1.2 |
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です。Java暗号化アーキテクチャ標準アルゴリズム名のドキュメント(JDK 8用)のSSLContextアルゴリズムに関する項を参照してください。WebLogic ServerではSSLv2はサポートされません。かわりに、基礎となるJSSEプロバイダによってサポートされるカスタム値にプロパティを設定できますが、TLS接続で有効化されるSSL/TLSプロトコル・バージョンに影響する可能性があります。