검색

6장. 메시지 보호

download PDF

초록

이 장에서는 다음의 메시지 보호 메커니즘이 설명되어 있습니다: 도청(암호화 알고리즘 사용) 및 메시지 변조(메시지 다이제스트 알고리즘 사용)로부터 보호 보호는 다양한 수준의 세분성 및 다른 프로토콜 계층에 적용될 수 있습니다. 전송 계층에서는 메시지의 전체 콘텐츠에 보호를 적용할 수 있는 옵션이 있지만, Cryostat 계층에서 메시지의 다양한 부분(보조, 헤더 또는 첨부 파일)에 대한 보호를 적용할 수 있습니다.

6.1. 전송 계층 메시지 보호

6.1.1. 개요

전송 계층 메시지 보호는 전송 계층에서 제공하는 메시지 보호(암호화 및 서명)를 나타냅니다. 예를 들어 HTTPS는 SSL/TLS를 사용하여 암호화 및 메시지 서명 기능을 제공합니다. 실제로 WS-SecurityPolicy는 HTTPS 기능 세트에 많은 추가 기능을 추가하지 않습니다. HTTPS는 블루프린트 XML 구성을 사용하여 이미 완전히 구성할 수 있기 때문입니다( 3장. HTTPS 구성참조). 그러나 HTTPS에 대한 전송 바인딩 정책을 지정하면 WSDL 계약에 보안 요구 사항을 포함할 수 있다는 이점이 있습니다. 따라서 WSDL 계약의 사본을 가져오는 모든 클라이언트는 WSDL 계약의 엔드포인트에 대한 전송 계층 보안 요구 사항이 무엇인지 검색할 수 있습니다.

주의

전송 계층에서 SSL/TLS 보안을 활성화하는 경우 Poodle 취약점 (CVE-2014-3566) 으로부터 보호하기 위해 SSLv3 프로토콜을 명시적으로 비활성화해야 합니다. 자세한 내용은 JBoss Fuse 6.x 및 JBoss A-MQ 6.x에서 SSLv3 비활성화 를 참조하십시오.

6.1.2. 사전 요구 사항

WS-SecurityPolicy를 사용하여 HTTPS 전송을 구성하는 경우 블루프린트 구성에서 HTTPS 보안을 적절하게 구성해야 합니다.

예 6.1. “블루프린트의 클라이언트 HTTPS 구성” HTTPS 전송 프로토콜을 사용하도록 클라이언트를 구성하는 방법을 보여줍니다. sec:keyManagers 요소는 클라이언트의 고유 인증서, alice.pfxsec:trustManagers 요소는 신뢰할 수 있는 CA 목록을 지정합니다. http:conduit 요소의 name 속성은 엔드포인트 주소와 일치하도록 와일드카드를 사용하는 방법을 참조하십시오. 클라이언트 측에서 HTTPS를 구성하는 방법에 대한 자세한 내용은 3장. HTTPS 구성 을 참조하십시오.

예 6.1. 블루프린트의 클라이언트 HTTPS 구성

<beans xmlns="https://osgi.org/xmlns/blueprint/v1.0.0/"
       xmlns:http="http://cxf.apache.org/transports/http/configuration"
       xmlns:sec="http://cxf.apache.org/configuration/security" ... >

  <http:conduit name="https://.*/UserNameOverTransport.*">
    <http:tlsClientParameters disableCNCheck="true">
      <sec:keyManagers keyPassword="password">
        <sec:keyStore type="pkcs12" password="password" resource="certs/alice.pfx"/>
      </sec:keyManagers>
      <sec:trustManagers>
        <sec:keyStore type="pkcs12" password="password" resource="certs/bob.pfx"/>
      </sec:trustManagers>
    </http:tlsClientParameters>
  </http:conduit>
  ...
</beans>

예 6.2. “블루프린트의 서버 HTTPS 구성” HTTPS 전송 프로토콜을 사용하도록 서버를 구성하는 방법을 보여줍니다. sec:keyManagers 요소는 서버의 고유 인증서인 bob.pfx 를 지정하고 sec:trustManagers 요소는 신뢰할 수 있는 CA 목록을 지정합니다. 서버 측에서 HTTPS를 구성하는 방법에 대한 자세한 내용은 3장. HTTPS 구성 을 참조하십시오.

예 6.2. 블루프린트의 서버 HTTPS 구성

<beans xmlns="https://osgi.org/xmlns/blueprint/v1.0.0/"
       xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration"
       xmlns:sec="http://cxf.apache.org/configuration/security" ... >

  <httpj:engine-factory id="tls-settings">
    <httpj:engine port="9001">
      <httpj:tlsServerParameters secureSocketProtocol="TLSv1">
        <sec:keyManagers keyPassword="password">
          <sec:keyStore type="pkcs12" password="password" resource="certs/bob.pfx"/>
        </sec:keyManagers>
        <sec:trustManagers>
          <sec:keyStore type="pkcs12" password="password" resource="certs/alice.pfx"/>
        </sec:trustManagers>
      </httpj:tlsServerParameters>
    </httpj:engine>
  </httpj:engine-factory>
  ...
</beans>
중요

6.1.3. 정책 제목

전송 바인딩 정책은 끝점 정책 제목에 적용해야 합니다( “끝점 정책 제목”참조). 예를 들어 ID가 있는 전송 바인딩 정책이 UserNameOverTransport_IPingService_policy 인 경우 다음과 같이 정책을 끝점 바인딩에 적용할 수 있습니다.

<wsdl:binding name="UserNameOverTransport_IPingService" type="i0:IPingService">
  <wsp:PolicyReference URI="#UserNameOverTransport_IPingService_policy"/>
  ...
</wsdl:binding>

6.1.4. 구문

TransportBinding 요소에는 다음과 같은 구문이 있습니다.

<sp:TransportBinding xmlns:sp="..." ... >
  <wsp:Policy xmlns:wsp="...">
    <sp:TransportToken ... >
      <wsp:Policy> ... </wsp:Policy>
      ...
    </sp:TransportToken>
    <sp:AlgorithmSuite ... > ... </sp:AlgorithmSuite>
    <sp:Layout ... > ... </sp:Layout> ?
    <sp:IncludeTimestamp ... /> ?
      ...
  </wsp:Policy>
  ...
</sp:TransportBinding>

6.1.5. 정책 샘플

예 6.3. “전송 바인딩의 예” HTTPS 전송( sp:HttpsToken 요소에 의해 지정됨) 및 256비트 알고리즘 모음( sp:Basic256 요소에서 지정)을 사용하여 기밀성 및 무결성을 필요로 하는 전송 바인딩의 예를 보여줍니다.

예 6.3. 전송 바인딩의 예

<wsp:Policy wsu:Id="UserNameOverTransport_IPingService_policy">
  <wsp:ExactlyOne>
    <wsp:All>
      <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
        <wsp:Policy>
          <sp:TransportToken>
            <wsp:Policy>
              <sp:HttpsToken RequireClientCertificate="false"/>
            </wsp:Policy>
          </sp:TransportToken>
          <sp:AlgorithmSuite>
            <wsp:Policy>
              <sp:Basic256/>
            </wsp:Policy>
          </sp:AlgorithmSuite>
          <sp:Layout>
            <wsp:Policy>
              <sp:Lax/>
            </wsp:Policy>
          </sp:Layout>
          <sp:IncludeTimestamp/>
        </wsp:Policy>
      </sp:TransportBinding>
      ...
      <sp:Wss10 xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
        <wsp:Policy>
          <sp:MustSupportRefKeyIdentifier/>
          <sp:MustSupportRefIssuerSerial/>
        </wsp:Policy>
      </sp:Wss10>
    </wsp:All>
  </wsp:ExactlyOne>
</wsp:Policy>

6.1.6. sp:TransportToken

이 요소에는 두 가지 효과가 있습니다. 특정 유형의 보안 토큰이 필요하며 전송의 보안 방법을 나타냅니다. 예를 들어 sp:HttpsToken 을 지정하면 연결이 HTTPS 프로토콜에 의해 보호되고 보안 토큰이 X.509 인증서임을 나타냅니다.

6.1.7. sp:AlgorithmSuite

이 요소는 서명 및 암호화에 사용할 암호화 알고리즘 제품군을 지정합니다. 사용 가능한 알고리즘 모음에 대한 자세한 내용은 6.2.7절. “알고리즘 모음 지정” 을 참조하십시오.

6.1.8. sp:Layout

이 요소는 보안 헤더가 Cryostat 메시지에 추가되는 순서에 조건을 적용할지 여부를 지정합니다. sp:Lax 요소는 보안 헤더 순서에 조건이 적용되지 않도록 지정합니다. sp:Lax 의 대안은 sp: Ssimplet ,sp:LaxTimestampFirst 또는 sp:LaxTimestampLast 입니다.

6.1.9. sp:IncludeTimestamp

이 요소가 정책에 포함된 경우 런타임은 wsu:Timestamp 요소를 wsse:Security 헤더에 추가합니다. 기본적으로 타임스탬프는 포함되지 않습니다.

6.1.10. sp:MustSupportRefKeyIdentifier

이 요소는 WS-Security 1.0 사양에 지정된 대로 보안 런타임에서 키 식별자 토큰 참조를 처리할 수 있어야 함을 지정합니다. 키 식별자는 서명 또는 암호화 요소 내에서 사용될 수 있는 키 토큰을 식별하는 메커니즘입니다. Apache CXF에는 이 기능이 필요합니다.

6.1.11. sp:MustSupportRefIssuerSerial

이 요소는 WS-Security 1.0 사양에 지정된 대로 보안 런타임에서 발급자 및 직렬 번호 토큰 참조를 처리할 수 있어야 함을 지정합니다. 발행자 및 일련 번호는 서명 또는 암호화 요소 내에서 사용할 수 있는 키 토큰을 식별하는 메커니즘입니다. Apache CXF에는 이 기능이 필요합니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.