5장. 브로커 보안


5.1. 연결 보안

브로커가 메시징 클라이언트에 연결되거나 브로커가 다른 브로커에 연결된 경우 TLS(Transport Layer Security)를 사용하여 이러한 연결을 보호할 수 있습니다.

다음 두 가지 TLS 구성을 사용할 수 있습니다.

  • 단방향 TLS: 브로커만 인증서를 제공합니다. 가장 일반적인 구성입니다.
  • 두 방향(또는 상호) TLS: 브로커와 클라이언트(또는 기타 브로커) 모두 인증서를 제공합니다.

5.1.1. 단방향 TLS 구성

다음 절차에서는 단방향 TLS에 대해 지정된 수락자를 구성하는 방법을 보여줍니다.

  1. &lt ;broker_instance_dir> /etc/broker.xml 구성 파일을 엽니다.
  2. 지정된 허용자의 경우 sslEnabled 키를 추가하고 값을 true 로 설정합니다. 또한 keyStorePathkeyStorePassword 키를 추가합니다. 브로커 키 저장소에 해당하는 값을 설정합니다. 예를 들면 다음과 같습니다.

    <acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!</acceptor>

5.1.2. 양방향 TLS 구성

다음 절차에서는 양방향 TLS를 구성하는 방법을 보여줍니다.

사전 요구 사항

프로세스

  1. &lt ;broker_instance_dir&gt; /etc/broker.xml 구성 파일을 엽니다.
  2. 이전에 단방향 TLS용으로 구성한 승인자의 경우 needClientAuth 키를 추가합니다. 값을 true 로 설정합니다. 예를 들면 다음과 같습니다.

    <acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!;needClientAuth=true</acceptor>
  3. 이전 단계의 구성은 클라이언트의 인증서가 신뢰할 수 있는 공급자가 서명한다고 가정합니다. 클라이언트의 인증서가 신뢰할 수 있는 공급자(예: 자체 서명)에 서명 되지 않은 경우 브로커는 클라이언트의 인증서를 신뢰 저장소로 가져와야 합니다. 이 경우 trustStorePathtrustStorePassword 키를 추가합니다. 브로커 신뢰 저장소에 해당하는 값을 설정합니다. 예를 들면 다음과 같습니다.

    <acceptor name="artemis">tcp://0.0.0.0:61616?sslEnabled=true;keyStorePath=../etc/broker.keystore;keyStorePassword=1234!;needClientAuth=true;trustStorePath=../etc/client.truststore;trustStorePassword=5678!</acceptor>
참고

AMQ Broker는 여러 프로토콜을 지원하며 각 프로토콜과 플랫폼은 TLS 매개변수를 지정하는 방법이 다릅니다. 그러나 Core Protocol(a bridge)을 사용하는 클라이언트의 경우 TLS 매개변수는 브로커의 수락자처럼 커넥터 URL에 구성됩니다.

자체 서명된 인증서가 JVM(Java Virtual Machine) 신뢰 저장소에 신뢰할 수 있는 인증서로 나열된 경우 JVM은 인증서의 만료 날짜를 확인하지 않습니다. 프로덕션 환경에서는 인증 기관에서 서명한 인증서를 사용하는 것이 좋습니다.

5.1.3. TLS 구성 옵션

다음 표에는 사용 가능한 모든 TLS 구성 옵션이 나와 있습니다.

표 5.1. TLS 구성 옵션
옵션참고

sslEnabled

연결에 SSL이 활성화되었는지 여부를 지정합니다. TLS를 활성화하려면 true 로 설정해야 합니다. 기본값은 false입니다.

keyStorePath

수락자에서 사용되는 경우: 브로커 인증서를 보유한 브로커의 TLS 키 저장소 경로(자체 서명 또는 기관에서 서명)합니다.

커넥터에 사용되는 경우: 클라이언트 인증서가 있는 클라이언트의 TLS 키 저장소로 이동합니다. 이는 양방향 TLS를 사용하는 경우에만 커넥터와 관련이 있습니다. 브로커에서 이 값을 구성할 수 있지만 클라이언트가 다운로드하여 사용합니다. 클라이언트가 브로커에 설정된 것과 다른 경로를 사용해야 하는 경우 표준 javax.net.ssl.keyStore 시스템 속성 또는 AMQ 특정 org.apache.activemq.ssl.keyStore 시스템 속성을 사용하여 브로커 설정을 덮어쓸 수 있습니다. AMQ별 시스템 속성은 클라이언트의 다른 구성 요소가 이미 표준 Java 시스템 속성을 사용하고 있는 경우 유용합니다.

keyStorePassword

수락자에 사용되는 경우: 브로커의 키 저장소에 대한 암호입니다.

커넥터에 사용되는 경우: 클라이언트의 키 저장소에 대한 암호입니다. 이는 양방향 TLS를 사용하는 경우에만 커넥터와 관련이 있습니다. 브로커에서 이 값을 구성할 수 있지만 클라이언트가 다운로드하여 사용합니다. 클라이언트가 브로커에 설정된 것과 다른 암호를 사용해야 하는 경우 표준 javax.net.ssl.keyStorePassword 시스템 속성 또는 AMQ 특정 org.apache.activemq.ssl.keyStorePassword 시스템 속성을 사용하여 브로커 설정을 덮어쓸 수 있습니다. AMQ별 시스템 속성은 클라이언트의 다른 구성 요소가 이미 표준 Java 시스템 속성을 사용하고 있는 경우 유용합니다.

trustStorePath

수락자에서 사용되는 경우: 브로커가 신뢰하는 모든 클라이언트의 키를 보유한 브로커의 TLS 신뢰 저장소 경로입니다. 이는 양방향 TLS를 사용하는 경우에만 어셉터와 관련이 있습니다.

커넥터에 사용되는 경우: 클라이언트가 신뢰하는 모든 브로커의 공개 키를 보유한 클라이언트의 TLS 신뢰 저장소 경로입니다. 브로커에서 이 값을 구성할 수 있지만 클라이언트가 다운로드하여 사용합니다. 클라이언트가 서버에 설정된 것과 다른 경로를 사용해야 하는 경우 표준 javax.net.ssl.trustStore 시스템 속성 또는 AMQ 특정 org.apache.activemq.ssl.trustStore 시스템 속성을 사용하여 서버 측 설정을 재정의할 수 있습니다. AMQ별 시스템 속성은 클라이언트의 다른 구성 요소가 이미 표준 Java 시스템 속성을 사용하고 있는 경우 유용합니다.

trustStorePassword

수락자에서 사용되는 경우: 브로커의 신뢰 저장소에 대한 암호입니다. 이는 양방향 TLS를 사용하는 경우에만 어셉터와 관련이 있습니다.

커넥터에 사용되는 경우: 클라이언트의 신뢰 저장소에 대한 암호입니다. 브로커에서 이 값을 구성할 수 있지만 클라이언트가 다운로드하여 사용합니다. 클라이언트가 브로커에 설정된 것과 다른 암호를 사용해야 하는 경우 표준 javax.net.ssl.trustStorePassword 시스템 속성 또는 AMQ 특정 org.apache.activemq.ssl.trustStorePassword 시스템 속성을 사용하여 브로커 설정을 재정의할 수 있습니다. AMQ별 시스템 속성은 클라이언트의 다른 구성 요소가 이미 표준 Java 시스템 속성을 사용하고 있는 경우 유용합니다.

enabledCipherSuites

허용자 또는 커넥터 모두에 TLS 통신에 사용되는 쉼표로 구분된 암호화 제품군 목록입니다.

클라이언트 애플리케이션에서 지원하는 가장 안전한 암호화 제품군을 지정합니다. 브로커와 클라이언트에 공통되는 암호화 제품군의 쉼표로 구분된 목록을 지정하거나 암호화 모음을 지정하지 않는 경우 브로커와 클라이언트는 사용할 암호화 제품군을 서로 협상합니다. 지정할 암호화 모음을 모르는 경우 먼저 디버그 모드에서 실행 중인 클라이언트와 broker-client 연결을 설정하여 브로커와 클라이언트 모두에 공통된 암호화 제품군을 확인할 수 있습니다. 그런 다음 브로커에서 enabledCipherSuites 를 구성합니다.

사용 가능한 암호화 제품군은 브로커 및 클라이언트에서 사용하는 TLS 프로토콜 버전에 따라 다릅니다. 브로커를 업그레이드한 후 기본 TLS 프로토콜 버전이 변경되면 브로커와 클라이언트가 공통 암호화 제품군을 사용할 수 있도록 이전 TLS 프로토콜 버전을 선택해야 할 수 있습니다. 자세한 내용은 enabledProtocols 를 참조하십시오.

enabledProtocols

어셉터 또는 커넥터에 사용하든, 이는 TLS 통신에 사용되는 쉼표로 구분된 프로토콜 목록입니다. TLS 프로토콜 버전을 지정하지 않으면 브로커는 JVM의 기본 버전을 사용합니다.

브로커가 JVM에 기본 TLS 프로토콜 버전을 사용하고 브로커를 업그레이드한 후 해당 버전이 변경되면 브로커 및 클라이언트에서 사용하는 TLS 프로토콜 버전이 호환되지 않을 수 있습니다. 이후 TLS 프로토콜 버전을 사용하는 것이 좋지만, enabledProtocols 에서 이전 버전을 지정하여 최신 TLS 프로토콜 버전을 지원하지 않는 클라이언트와 상호 운용할 수 있습니다.

needClientAuth

이 속성은 승인자만 사용할 수 있습니다. 두 방향 TLS가 필요하다는 어셉터에 연결하는 클라이언트에 지시합니다. 유효한 값은 true 또는 false입니다. 기본값은 false입니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.