Menu Close

4.2. 暗号スイートフィルター

概要

通常のアプリケーションでは、利用可能な暗号スイートの一覧を JSSE プロバイダーがサポートする暗号のサブセットに制限する必要があります。

通常、sec:cipherSuites 要素の代わりに sec:cipherSuitesFilter 要素を使用して、使用する暗号スイートを選択する必要があります。

sec:cipherSuites 要素は直感的ではないセマンティクスを持つため、一般的な使用は 推奨されません。読み込まれるセキュリティープロバイダーが、少なくともリストされている暗号スイートをサポートすることを要求するために使用できます。しかし、読み込まれるセキュリティープロバイダーは、指定されているものよりも多くの暗号スイートをサポートする場合があります。したがって、sec:cipherSuites 要素を使用する場合は、実行時にどの暗号スイートがサポートされているかは明確ではありません。

名前空間

表4.1「暗号スイートフィルターの設定に使用される namespace」 は、このセクションで参照される XML namespace を示しています。

表4.1 暗号スイートフィルターの設定に使用される namespace

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:include 子要素を sec:cipherSuitesFilter 要素に追加します。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>