4.2. 暗号化スイートフィルター
概要
通常、標準的なアプリケーションでは、利用可能な暗号スイートのリストを JSSE プロバイダーがサポートする暗号のサブセットに制限します。
通常、sec:cipherSuites 要素の代わりに sec:cipherSuitesFilter 要素を使用して、使用する暗号スイートを選択する必要があります。
sec:cipherSuites 要素は直感的ではないセマンティクスを持つため、一般的な使用は 推奨されません。読み込まれるセキュリティープロバイダーが、少なくともリストされている暗号スイートをサポートすることを要求するために使用できます。ただし、ロードされるセキュリティープロバイダーは、指定されたものよりも多くの暗号スイートをサポートする可能性があります。したがって、sec:cipherSuites 要素を使用する場合は、実行時にどの暗号スイートがサポートされているかは明確ではありません。
Namespaces
表4.1「暗号スイートフィルターの設定に使用する名前空間」 は、このセクションで参照される XML 名前空間を示しています。
表4.1 暗号スイートフィルターの設定に使用する名前空間
sec:cipherSuitesFilter 要素
sec:cipherSuitesFilter 要素を使用して暗号スイートフィルターを定義します。これは、http:tlsClientParameters 要素または httpj:tlsServerParameters 要素の子になります。一般的な sec:cipherSuitesFilter 要素には、例4.1「sec:cipherSuitesFilter 要素の構造」 に記載されているアウトライン構造があります。
例4.1 sec:cipherSuitesFilter 要素の構造
<sec:cipherSuitesFilter>
<sec:include>RegularExpression</sec:include>
<sec:include>RegularExpression</sec:include>
...
<sec:exclude>RegularExpression</sec:exclude>
<sec:exclude>RegularExpression</sec:exclude>
...
</sec:cipherSuitesFilter>セマンティクス
以下のセマンティックルールは sec:cipherSuitesFilter 要素に適用されます。
sec:cipherSuitesFilter要素がエンドポイントの設定に 表示されない (つまり、関連するhttp:conduitまたはhttpj:engine-factory要素にない) 場合 は、以下のデフォルトフィルターが使用されます。<sec:cipherSuitesFilter> <sec:include>.*_EXPORT_.*</sec:include> <sec:include>.*_EXPORT1024.*</sec:include> <sec:include>.*_DES_.*</sec:include> <sec:include>.*_WITH_NULL_.*</sec:include> </sec:cipherSuitesFilter>-
sec:cipherSuitesFilter要素がエンドポイントの設定に 表示される 場合、すべての暗号スイートはデフォルトで 除外されます。 -
暗号化スイートを含めるには、
sec:cipherSuitesFilter要素にsec:include子要素を追加します。sec:include要素の内容は、1 つ以上の暗号スイート名と一致する正規表現です (例: 「SunJSSE でサポートされる暗号スイート」 の暗号スイート名を参照)。 選択した暗号スイートのセットをさらに絞り込むには、
sec:exclude要素をsec:cipherSuitesFilter要素に追加します。sec:exclude要素の内容は、現在含まれているセットからゼロ以上の暗号スイート名と一致する正規表現です。注記望ましくない暗号化スイートが意図しない暗号化スイートを明示的に除外することは理にかなっています。
正規表現の一致
sec:include および sec:exclude 要素に表示される正規表現の文法は、Java 正規表現ユーティリティー java.util.regex.Pattern で定義されています。文法の詳細については、Java リファレンスガイド http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html を参照してください。
クライアントのコンジットの例
以下の XML 設定は、暗号スイートフィルターをリモートエンドポイント {WSDLPortNamespace}PortName に適用するクライアントの例を示しています。クライアントがこのエンドポイントへの SSL/TLS 接続を開こうとすると、利用可能な暗号スイートを sec:cipherSuitesFilter 要素が選択したセットに制限します。
<beans ... >
<http:conduit name="{WSDLPortNamespace}PortName.http-conduit">
<http:tlsClientParameters>
...
<sec:cipherSuitesFilter>
<sec:include>.*_WITH_3DES_.*</sec:include>
<sec:include>.*_WITH_DES_.*</sec:include>
<sec:exclude>.*_WITH_NULL_.*</sec:exclude>
<sec:exclude>.*_DH_anon_.*</sec:exclude>
</sec:cipherSuitesFilter>
</http:tlsClientParameters>
</http:conduit>
<bean id="cxf" class="org.apache.cxf.bus.CXFBusImpl"/>
</beans>