4.13. 클러스터 연결 보안


클러스터의 브로커 간 내부 연결은 내부 커넥터와 어셉터를 사용하며, 둘 다 Artemis 로 이름이 지정됩니다. SSL을 활성화하여 TLS(Transport Layer Security) 프로토콜을 사용하여 클러스터의 브로커 간 연결을 보호할 수 있습니다.

SSL 지원 수락자는 클러스터의 모든 브로커에 대한 공통 TLS 인증서가 포함된 시크릿을 지정합니다. SSL 지원 커넥터에서는 TLS 인증서의 공개 키가 포함된 신뢰 저장소를 지정합니다. 각 브로커의 신뢰 저장소에 공개 키가 필요하므로 브로커는 TLS 연결을 설정할 때 클러스터의 다른 브로커를 신뢰할 수 있습니다.

다음 예제 절차에서는 자체 서명된 인증서를 사용하여 클러스터의 브로커 간에 내부 연결을 보호하는 방법을 설명합니다.

프로세스

  1. 자체 서명된 TLS 인증서를 생성하여 키 저장소 파일에 추가합니다.

    • 인증서의 주체 대체 이름 (SAN) 필드에서 다음 예와 같이 클러스터의 모든 브로커와 일치하는 와일드카드 DNS 이름을 지정합니다. 이 예제는 테스트 네임스페이스에 배포된 ex-aao 라는 CR을 사용하는 것을 기반으로 합니다.

      $ keytool -storetype jks -keystore server-keystore.jks -storepass artemis -keypass artemis -alias server -genkey -keyalg "RSA" -keysize 2048 -dname "CN=AMQ Server, OU=Artemis, O=ActiveMQ, L=AMQ, S=AMQ, C=AMQ" -validity 365 -ext bc=ca:false -ext eku=sA -ext san=dns:*.ex-aao-hdls-svc.test.svc.cluster.local
    • 인증서가 와일드카드 DNS 이름 사용을 지원하지 않는 경우 클러스터의 모든 브로커 Pod에 대한 인증서의 SAN 필드에 쉼표로 구분된 DNS 이름 목록을 포함할 수 있습니다. 예를 들면 다음과 같습니다.

      keytool -storetype jks -keystore server-keystore.jks -storepass artemis -keypass artemis -alias server -genkey -keyalg "RSA" -keysize 2048 -dname "CN=AMQ Server, OU=Artemis, O=ActiveMQ, L=AMQ, S=AMQ, C=AMQ" -validity 365 -ext bc=ca:false -ext eku=sA -ext san=dns:ex-aao-ss-0.ex-aao-hdls-svc.test.svc.cluster.local,dns:ex-aao-ss-1.ex-aao-hdls-svc.test.svc.cluster.local
    • TLS 인증서가 DNS 이름 사용을 지원하지 않는 경우 아래 설명된 대로 ActiveMQArtemis CR에서 호스트 확인을 비활성화해야 합니다.
  2. 신뢰 저장소 파일로 가져올 수 있도록 키 저장소 파일에서 TLS 인증서의 공개 키를 내보냅니다. 예를 들면 다음과 같습니다.

    $ keytool -storetype jks -keystore server-keystore.jks -storepass artemis -alias server -exportcert -rfc > server.crt
  3. 클러스터의 다른 브로커가 인증서를 신뢰할 수 있도록 TLS 인증서의 공개 키를 신뢰 저장소 파일로 가져옵니다. 예를 들면 다음과 같습니다.

    $ keytool -storetype jks -keystore server-truststore.jks -storepass artemis -keypass artemis -importcert -alias server -file server.crt -noprompt
  4. 키 저장소 및 신뢰 저장소 파일 및 관련 암호를 저장할 시크릿을 생성합니다. 예를 들면 다음과 같습니다.

    oc create secret generic artemis-ssl-secret --namespace test --from-file=broker.ks=server-keystore.jks --from-file=client.ts=server-truststore.jks --from-literal=keyStorePassword=artemis --from-literal=trustStorePassword=artemis
  5. 브로커 배포에 대해 ActiveMQArtemis CR을 편집하고 Artemis라는 내부 어 셉터를 추가합니다. Artemis acceptor 에서 sslEnabled 속성을 true 로 설정하고 sslSecret 특성에서 생성한 시크릿 이름을 지정합니다. 예를 들면 다음과 같습니다.

    spec:
      ..
      deploymentPlan:
        size: 2
      acceptors:
      - name: artemis
        port: 61616
        sslEnabled: true
        sslSecret: artemis-ssl-secret
      ..
  6. 클러스터의 각 브로커가 클러스터 다른 브로커에 연결하는 데 사용하는 Artemis 커넥터에 대해 SSL을 활성화합니다. brokerProperties 속성을 사용하여 SSL을 활성화하고 TLS 인증서의 공개 키가 포함된 truststore 파일의 경로와 자격 증명을 지정합니다.

    spec:
      ..
      deploymentPlan:
        size: 2
      acceptors:
      - name: artemis
        port: 61616
        sslEnabled: true
        sslSecret: artemis-ssl-secret
      brokerProperties:
      - 'connectorConfigurations.artemis.params.sslEnabled=true'
      - 'connectorConfigurations.artemis.params.trustStorePath=/etc/artemis-ssl-secret-volume/client.ts'
      - 'connectorConfigurations.artemis.params.trustStorePassword=artemis'
      ..
    connectorConfigurations.artemis.params.trustStorePath
    이 값은 브로커 Pod의 truststore 파일 client.ts 와 일치해야 합니다. 시크릿의 truststore 파일 및 관련 암호 파일은 각 브로커 Pod의 /etc/<시크릿 이름>-volume 디렉터리에 마운트됩니다. 이전 예제에서는 artemis-ssl-secret 이라는 시크릿에 있는 신뢰 저장소의 위치를 지정합니다.
  7. TLS 인증서에서 DNS 이름 사용을 지원하지 않는 경우 brokerProperties 속성을 사용하여 호스트 확인을 비활성화합니다. 예를 들면 다음과 같습니다.

    spec:
      ..
      brokerProperties:
      ..
      - 'connectorConfigurations.artemis.params.verifyHost=false'
      ..
  8. CR을 저장합니다.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동