37 JSSEベースSSL実装の使用
ノート:
次の点に注意してください。
-
WebLogic Serverバージョン12.1.1以降では、サポートされるSSL実装はJSSEのみになります。CerticomベースのSSL実装はなくなり、WebLogic Serverでサポートされなくなりました。
-
SHA-2署名証明書は、WebLogic Serverで提供されているJSSE SSL実装でサポートされます。
-
JSSEはそのSSL実装でServer Name Indication(SNI)をサポートしますが、WebLogic ServerはSNIをサポートしません。
この章の内容は次のとおりです。
JSSEベース実装とCerticom SSL実装とのシステム・プロパティの相違
JSSE SSL実装とCerticom SSL実装によるWebLogicセキュリティ・システム・プロパティの処理方法の違いを学習します。
表37-1 システム・プロパティの相違
システム・プロパティ | JSSEの適用性 | 説明 |
---|---|---|
|
このプロパティは引き続き機能し、JSSE統合による影響はありません。 |
証明書のホスト名に対してURLのホスト名を検証しません。 |
|
このプロパティは引き続き機能し、JSSE統合による影響はありません。 |
trueに設定すると、逆引きDNSルックアップを使用して、 |
|
このプロパティは引き続き機能し、JSSE統合による影響はありません。 |
キーストアから信頼できるCA証明書をロードします。 |
|
このプロパティを |
|
|
このプロパティを |
SSLデバッグ情報をコンソールまたはログに表示します。このプロパティは、呼出し側のWebLogicコード用です。JSSEベースSSL実装には、 ノート: JSSEロギング( |
|
デフォルトは |
必要に応じて、Certicom暗号スイート名の Certicom暗号スイート名とそれらの |
|
このプロパティは引き続き機能し、JSSE統合による影響はありません。 |
|
|
このプロパティは引き続き機能し、JSSE統合による影響はありません。 |
カスタム・ホスト名検証クラスのクラス名を指定します。 |
|
このプロパティは引き続き機能し、JSSE統合による影響はありません。 サポートされるプロトコルの値は、JSSEでサポートされる同等のプロトコルにマップされます。 |
「SSL/TLSプロトコル・バージョンの指定」を参照してください。 |
次のうちいずれか。
|
この設定が有効な場合、この2つのNull暗号は暗号リストに追加されます。 |
デフォルトでは、この制御は設定されず、Null暗号の使用はサーバーで許可されません。このような構成では、SSLクライアントでNull暗号スイートを使用する場合(唯一のサポート対象暗号スイートとして この制御を設定した場合、Null暗号スイート( 注意: 設定の意味とその結果を把握しないかぎり、本番環境ではこの制御を設定しないでください。 |
|
|
CA証明書の基本制約拡張が確実にCAとして定義されることを確認します。「証明書検証のレベルの制御」を参照してください。 |
|
サポートされていません。 |
WebLogic Serverでは、X.509証明書の証明書ポリシー拡張機能に対するサポートが制限されます。「証明書の証明書ポリシーの許可」を参照してください。 |
|
サポートされていません。 |
「SSLの設定: 主なステップ」を参照してください。 |
脚注1
このWebLogicシステム・プロパティは、CerticomとJSSEベースSSL実装の両方に適用できます。ただし、JSSEの場合、このプロパティはSSL呼出しコードにのみ影響を及ぼし、JSSEベース実装には影響を及ぼしません。javax.net.debug
システム・プロパティおよびJSSEベースSSL実装のデバッグの詳細は、Java Secure Socket Extension (JSSE)リファレンス・ガイドのデバッグ・ユーティリティに関する項(http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Debug
)を参照してください。
SSLのパフォーマンスに関する考慮事項
WebLogic ServerがJDK 8で構成されている場合、デフォルトのSSLのパフォーマンスが以前のリリースのWebLogic Serverより低い場合があります。このパフォーマンスの変化は、JDK 8がWebLogic ServerでJSSEベースのSSLプロバイダとともに使用される場合にデフォルトで使用される、より強力な暗号とMACアルゴリズムが原因で起こります。SSL接続にデフォルトで使用されるより強力な暗号を無効にできます。
具体的には、AESが暗号化に、SHA-2がハッシュに使用されます。(ここではこの暗号の組合せが、通常AES + SHA-2、つまり暗号+MACアルゴリズムとして指定されます。)
以前のバージョンのWebLogic Serverは、SSL接続のために、RC4とMD5の暗号の組合せ(RC4 + MD5)を使用していました。AES + SHA-2のパフォーマンスはRC4 + MD5より低下します。AES + SHA-2をお薦めしますが、より強力な暗号を制限し、SSLでそのかわりにRC4 + MD5が使用されるようにWebLogic Serverを構成できます。RC4 + MD5はAES + SHA-2より安全性が低下しますが、特定のWebLogic Server環境のセキュリティ要件によっては使用できる場合があります。
ノート:
SSL接続には、AES + SHA-2で提供されるより強力なセキュリティの使用を強くお薦めします。
RC4 + MD5を使用するようにWebLogic Serverを構成するには、次のプロパティをファイルJAVA_HOME
/jre/lib/security/java.security
に追加します。
jdk.tls.disabledAlgorithms=AES, DESede, DES, SHA1, SHA
前述のプロパティによって、SSL接続のためにデフォルトで使用されるより強力な暗号化が無効になり、RC4 + MD5の使用が許可されます。
暗号スイート
WebLogic Serverでサポートされている暗号スイート、匿名暗号の使用およびWLSTを使用した暗号スイートの設定について学習します。
このトピックには次のセクションが含まれます:
非推奨の暗号スイート
Oracleのセキュリティ・ガイドラインでは、接頭辞がTLS_RSA_
または_CBC_
を含むTLS暗号スイートは非推奨であり、デフォルトで無効になっています。無効になっているこれらの暗号スイートは脆弱であり、システムのセキュリティを十分に確保できません。ただし、使用環境に必要な場合は、次のいずれかの方法を使用してこれらのTLS暗号スイートを有効にできます:
-
weblogic.management.configuration.SSLMBean
MBeanのExcludedCiphersuites
属性を、空の文字列を1つのみ含む配列に設定します。たとえば、new String[]{""}
などです。 -
weblogic.management.configuration.SSLMBean
MBeanのMinimumTLSProtocolVersion
属性をTLSv1.1
またはそれ以前に設定します。 -
WebLogic Serverを起動するJavaコマンドで、システム・プロパティ
-Dweblogic.security.SSL.minimumProtocolVersion
をTLSv1.1
またはそれ以前に設定します。 -
WebLogic Serverを起動するJavaコマンドで、システム・プロパティ
-Dweblogic.security.SSL.protocolVersion
を設定します。「weblogic.security.SSL.protocolVersionシステム・プロパティの使用」を参照してください。
サポートされる暗号スイートの後方互換性
後方互換性のために、JSSEベースのSSL実装はSunJSSE
と互換性のある暗号スイートのCerticom暗号スイート名を受け入れます。Certicom暗号スイート名は、SunJSSE
の対応する名前に変換され、表37-2に示すように、通常は接頭辞「TLS_」が「SSL_」で置き換えられます。
Certicom暗号スイートとの後方互換性を考慮する上で、次のことを念頭においてください。
-
JSSEでは、デフォルトで選択されている暗号スイートはCerticom SSLと比較して強力ですが、パフォーマンスが低くなります。通常は、使用している環境のセキュリティ・ポリシーで、使用する必要のある暗号スイートの要件を設定します。ただし、非常にセキュアな環境の場合、許容できるパフォーマンスを提供する使用可能な最強の暗号を使用することをお薦めします。
-
有効な暗号スイートまたはサポートされる暗号スイートが返される操作では、暗号スイートのCerticom名と
SunJSSE
名がどちらも返されます。(表37-1で説明されるように、weblogic.security.SSL.disableJsseCipherSuiteAliases=true
プロパティはこの動作を無効にします。) -
有効化された暗号スイートを指定する操作の場合、等価なCerticom暗号スイート名または
SunJSSE
名のいずれかを使用できます。Certicom暗号スイートとそれらのSunJSSE
の等価物は、表37-2にリストされています。(この先、Certicom暗号スイート名は使用しないことをお薦めします。) -
_DSS_
暗号スイートの場合、NIST FIPS Pub 186で定義されるDSS (Digital Signature Standard)で署名された証明書が必要です。DSAは、FIPS 186で説明されているキー生成スキームです。 -
_anon_
暗号スイートはデフォルトで無効であり、WebLogic Server管理コンソールで管理できません。「WLSTを使用した暗号スイートの設定: 一例」で説明されているように、かわりにWLSTを使用する必要があります。 -
Kerberos暗号スイート
TLS_KRB5_***
を使用するには、KDCアカウントを設定する必要があります。Kerberos要件の詳細は、Java Secure Socket Extension (JSSE)リファレンス・ガイド(http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#KRB
)を参照してください。 -
TLS DES暗号スイートは、デフォルトでJSSEプロバイダ・レベルで無効になっています。
https://java.com/en/jre-jdk-cryptoroadmap.html
にあるOracle JREおよびJDK暗号ロードマップを参照してください。
匿名暗号の使用
次の匿名暗号は、WebLogic ServerのJSSEベースのWebLogic SSL実装でデフォルトでサポートされていません。
-
TLS_DH_anon_WITH_3DES_EDE_CBC_SHA
-
TLS_DH_anon_WITH_RC4_128_MD5
-
TLS_DH_anon_WITH_DES_CBC_SHA
-
TLS_DH_anon_EXPORT_WITH_RC4_40_MD5
-
TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA
ただし前述の匿名暗号を有効にする場合は、次の引数を、WebLogic Serverを開始するJavaコマンドに追加します。
-Dweblogic.security.SSL.AllowAnonymousCipher=true
ほとんどの場合、WebLogic Serverまたはデプロイされたアプリケーションが、匿名暗号のみを使用するように構成されたSSLサーバー(LDAPサーバー、RDBMSシステムなど)へのアウトバウンド接続を行うSSLクライアントとして機能するときは、匿名暗号の有効化が必要です。一般的なユース・ケースは、非認証モードで構成されたOracle Internet Directoryインスタンスへの接続です。
ノート:
本番環境で匿名暗号を使用することはお薦めしません。
暗号スイート名の等価物
デフォルトでは、WebLogic ServerがJSSEベースのSSL実装を使用するように構成されるとき、Certicom暗号スイート名はSunJSSE
暗号スイート名に変換されます。表37-2は、(削除された) WebLogic Server Certicom SSL実装とそのSunJSSE
の等価物でサポートされる各暗号スイートをリストで表示します。TLS_
名はCerticom暗号スイート名で、SSL_
名は、等価なSunJSSE
プロバイダの暗号スイート名です。
表37-2 暗号スイート名の等価物
Certicom暗号スイート | SunJSSEの等価な暗号スイート |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
WLSTを使用した暗号スイートの設定: サンプル
次の例は、暗号スイートSSL_RSA_WITH_RC4_128_MD5
、SSL_RSA_WITH_RC4_128_SHA
およびSSL_RSA_WITH_3DES_EDE_CBC_SHA
を設定するWLSTスクリプトを示しています。このスクリプトを実行すると、暗号スイートがドメイン構成(config.xml
ファイル)に設定され、SSLリスナーがこの新しい暗号スイート設定で再起動されます。
ノート:
明確にするために、このWLSTサンプル・スクリプトでは、ユーザー名およびパスワードをクリア・テキストで表示しています。通常はWLSTコマンドにクリア・テキストのパスワードを入力しないでください。特に、クリア・テキストのパスワードが含まれるWLSTスクリプトをディスクに保存することは避けてください。このような状況では、暗号化されたパスワードを渡すメカニズムをかわりに使用する必要があります。WebLogic Scripting Toolの理解のWLSTのセキュリティに関する項を参照してください。url="t3://localhost:7001" adminUsername="weblogic" adminPassword="password" connect(adminUsername, adminPassword, url) edit() server=cmo.lookupServer('myserver') cd('Servers') cd('myserver') startEdit() cd('SSL') cd('myserver') ssl = server.getSSL() ciphers = ['SSL_RSA_WITH_RC4_128_MD5', 'SSL_RSA_WITH_RC4_128_SHA', 'SSL_RSA_WITH_3DES_EDE_CBC_SHA'] ssl.setCiphersuites(ciphers) save() activate() disconnect() exit()
SSLでのNull暗号の使用に関する重要なノート
SSLクライアントは、サーバーに接続して、SSLハンドシェイクを開始します。接続の一環として、クライアントは、サポートする暗号スイートのリストをサーバーに送信します。次に、サーバーは、クライアントが提供したリストから、クライアントおよびサーバーの双方がサポートしている暗号スイートを選択し、このセッションで使用します。
ただし、不適切に構成されたクライアントが、null暗号しか含まれない一連の暗号スイートを指定する可能性があります。null暗号では、データがクリア・テキストでネットワークに渡されます。(null暗号を含む暗号スイートの例は、SSL_RSA_WITH_NULL_MD5です。)null暗号を使用した場合、ネットワーク・パケットを傍受して、SSLメッセージを見ることができます。実質的に、SSLは使用されますが、セキュリティは実現されません。
サーバーは、クライアントとサーバーが共通して持っている暗号スイートがnull暗号のみの場合に限り、null暗号を選択します。サーバーがクライアントの暗号スイート・リストからnull暗号を選択した場合、ログには、「Null暗号を使用するセッションがSSLで確立されました。」というメッセージが含まれます。
このメッセージは、サーバーがクライアントのリストからnull暗号を選択した場合にのみ出力されます。
ノート:
SSLクライアントが、null暗号を使用してサーバーに不適切に接続している可能性が少しでもある場合は、ログ・ファイルを調べて、このメッセージがあるかどうかを確認してください。新しいクライアントの構成の際は、null暗号の使用に関して十分な注意を払い、必ず、適切に構成することをお薦めします。
以前にnull暗号を使用していなければ、既存のクライアントの構成で、突然null暗号の使用が開始されることはほぼありえません。ただし、無意識のうちに誤って構成された既存のクライアントの構成で、null暗号が使用されている場合があります。
null暗号とは関連のない、その他のSSLエラーも生じる可能性があります。どちらの場合も、対応するエラー・メッセージがログに表示されます。
「SSLの構成」を参照してください。ログ・ファイルの表示の詳細は、Oracle WebLogic Server管理コンソール・オンライン・ヘルプのログの表示と構成を参照してください。
Null暗号の使用を防ぐためのWebLogic Serverのコントロール
WebLogic Server 10g リリース3 (10.3)では、サーバーによるnull暗号の使用を防ぐためのコントロールがWebLogic Server管理コンソールに導入されました。
WebLogic Server管理コンソールで「サーバー」→「ServerName」→「構成」→「SSL」→「詳細」を選択すると表示される「非暗号化Null暗号の許可」コントロールは、null暗号化を許可できるかどうかを決定します。デフォルトでは、この制御は設定されず、Null暗号の使用はサーバーで許可されません。このような構成では、SSLクライアントでNull暗号スイートを使用する場合(唯一のサポート対象暗号スイートとしてSSL_RSA_WITH_NULL_MD5を指定)、SSLハンドシェイクは失敗します。
この制御を設定した場合、Null暗号スイート(SSL_RSA_WITH_NULL_MD5など)が、サポートされる暗号スイートのリストにサーバーによって追加されます。SSL接続では、クライアントが求めた場合にNull暗号スイートが使用する場合があります。Null暗号スイートが使用される合、メッセージは暗号化されません。
注意:
設定の意味とその結果を認識しない限り、本番環境ではこのコントロールを設定しないでください。
このコントロールはシステムの実行時パラメータweblogic.security.SSL.allowUnencryptedNullCipher
、およびSSLMBeanのAllowUnencryptedNullCipher
属性としても公開されます。
ノート:
TLS匿名およびNULL暗号スイートは、JDKではデフォルトで無効です。JSSE SSLでのデバッグの使用
JSSEベースSSL実装が有効化されているときにSSLをデバッグする場合、表37-1に示されているデバッグ・ロギング・プロパティを使用できます。ただし、一部のプロパティは、SSL呼出しコードにのみ影響を及ぼし、JSSE実装には影響しません。JSSEベースSSL実装には、javax.net.debug
プロパティによってアクティブ化される独自のロギング・システムが含まれます。javax.net.debug
プロパティは、出力量を超える複数の制御レベルを提供し、WebLogic SSLロギング(ssl.debug
)とは別個に使用できます。
javax.net.debug
プロパティの詳細は、次のURLから入手可能なJava Secure Socket Extension (JSSE)リファレンス・ガイドのデバッグ・ユーティリティに関する項を参照してください。
http://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#Debug
WebLogic ServerでのRSA JSSEプロバイダの使用
RSA JSSEは、JVMを使用する場合、これに静的に登録できるサード・パーティのJSSEプロバイダです。非FIPSモードでRSA JSSEプロバイダをインストールして構成する方法を学習します。
ノート:
この項では、非FIPSモードでのRSA JSSEプロバイダの使用について説明します。RSA JSSEプロバイダは、FIPSモードの有効化で説明するようにFIPSモードで使用することもできます。
RSA JSSEプロバイダをインストールおよび構成するには、次のステップを完了させます。