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 要素に適用されます。

  1. 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>
  2. sec:cipherSuitesFilter 要素がエンドポイントの設定に 表示される 場合、すべての暗号スイートはデフォルトで 除外されます
  3. 暗号化スイートを含めるには、sec:cipherSuitesFilter 要素に sec:include 子要素を追加します。sec:include 要素の内容は、1 つ以上の暗号スイート名と一致する正規表現です (例: 「SunJSSE でサポートされる暗号スイート」 の暗号スイート名を参照)。
  4. 選択した暗号スイートのセットをさらに絞り込むには、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>