4.2. 암호화 제품군 필터

4.2.1. 개요

일반적인 애플리케이션에서는 일반적으로 사용 가능한 암호화 제품군 목록을 JSSE 공급자가 지원하는 암호의 하위 집합으로 제한하려고 합니다.

일반적으로 sec:cipherSuites 요소 대신 sec:cipherSuitesFilter 요소를 사용하여 사용하려는 암호화 제품군을 선택해야 합니다.

sec:cipherSuites 요소는 의도하지 않은 의미 체계가 있기 때문에 일반적으로 사용하지 않는 것이 좋습니다. 로드된 보안 공급자가 최소한 나열된 암호화 제품군을 지원하도록 요청할 수 있습니다. 그러나 로드된 보안 공급자는 지정된 암호화 제품군보다 더 많은 암호화 제품군을 지원할 수 있습니다. 따라서 sec:cipherSuites 요소를 사용하면 런타임에 어떤 암호화 제품군이 지원되는지 명확하지 않습니다.

4.2.2. 네임스페이스

표 4.1. “Cipher Suite 필터 구성에 사용되는 네임스페이스” 이 섹션에서 참조되는 XML 네임스페이스를 표시합니다.

표 4.1. Cipher Suite 필터 구성에 사용되는 네임스페이스

4.2.3. sec:cipherSuitesFilter 요소

sec:cipherSuitesFilter 요소를 사용하여 암호화 제품군 필터를 정의합니다. 이 요소는 http:tlsClientParameters 요소 또는 httpj:tlsServerParameters 요소의 자식일 수 있습니다. 일반적인 sec:cipherSuitesFilter 요소에는 예 4.1. “sec:cipherSuitesFilter Element의 구조” 에 표시된 개요 구조가 있습니다.

예 4.1. sec:cipherSuitesFilter Element의 구조

<sec:cipherSuitesFilter>
    <sec:include>RegularExpression</sec:include>
    <sec:include>RegularExpression</sec:include>
    ...
    <sec:exclude>RegularExpression</sec:exclude>
    <sec:exclude>RegularExpression</sec:exclude>
    ...
</sec:cipherSuitesFilter>

4.2.4. 의미 체계

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 요소의 내용은 하나 이상의 암호화 제품군 이름과 일치하는 정규식입니다(예: “SunJSSE에서 지원하는 암호화 제품군”의 암호화 제품군 이름 참조).
  4. 선택한 암호화 제품군 세트를 추가로 구체화하려면 sec:exclude 요소를 sec:cipherSuitesFilter 요소에 추가할 수 있습니다. sec:exclude 요소의 내용은 현재 포함된 세트의 0개 이상의 암호화 제품군 이름과 일치하는 정규식입니다.

    참고

    경우에 따라 바람직하지 않은 암호화 제품군을 실수로 포함하지 않도록 현재 포함되지 않은 암호화 제품군을 명시적으로 제외하는 것이 좋습니다.

4.2.5. 일치하는 정규식

sec:includesec:exclude 요소에 표시되는 정규식에 대한 grammar는 Java 정규식 유틸리티인 java.util.regex.Pattern.에 의해 정의됩니다. 문법에 대한 자세한 설명은 Java 참조 가이드 http://download.oracle.com/javase/1.5.0/docs/api/java/util/regex/Pattern.html 를 참조하십시오.

4.2.6. 고객 접착제 예

다음 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>