10장. TLS 인증서 관리


AMQ Streams는 Kafka와 AMQ Streams 구성 요소 간의 암호화된 통신을 위해 TLS를 지원합니다.

통신은 항상 다음 구성 요소 간에 암호화됩니다.

  • Kafka와 Zoo Cryostat 간의 통신
  • Kafka 브로커 간 Interbroker 통신
  • Zoo Cryostat 노드 간 상호 통신
  • AMQ Streams Operator는 Kafka 브로커 및 Zoo Cryostat 노드와의 통신

Kafka 클라이언트와 Kafka 브로커 간의 통신은 클러스터 구성 방법에 따라 암호화됩니다. Kafka 및 AMQ Streams 구성 요소의 경우 TLS 인증서도 인증에 사용됩니다.

Cluster Operator는 클러스터 내에서 암호화 및 인증을 활성화하기 위해 TLS 인증서를 자동으로 설정하고 갱신합니다. Kafka 브로커와 클라이언트 간의 암호화 또는 TLS 인증을 활성화하려면 다른 TLS 인증서도 설정합니다.

구성 요소 및 클라이언트의 ID를 확인하기 위해 Cluster Operator에서 CA(인증 기관) 인증서를 생성합니다. Cluster Operator에서 생성한 CA를 사용하지 않으려면 자체 클러스터 및 클라이언트 CA 인증서를 설치할 수 있습니다.

TLS 리스너 또는 TLS 암호화가 활성화된 외부 리스너에 대한 Kafka 리스너 인증서를제공할 수도 있습니다. Kafka 리스너 인증서를 사용하여 이미 보유한 보안 인프라를 통합합니다.

참고

제공하는 인증서는 Cluster Operator에 의해 갱신되지 않습니다.

그림 10.1. TLS로 보안된 통신 아키텍처의 예

보안 통신

10.1. 인증 기관

암호화를 지원하기 위해 각 AMQ Streams 구성 요소에는 자체 개인 키와 공개 키 인증서가 필요합니다. 모든 구성 요소 인증서는 클러스터 CA라는 내부 CA(인증 기관)에서 서명합니다.

마찬가지로 TLS 클라이언트 인증을 사용하여 AMQ Streams에 연결하는 각 Kafka 클라이언트 애플리케이션은 개인 키와 인증서를 제공해야 합니다. 클라이언트 CA라는 두 번째 내부 CA는 Kafka 클라이언트 의 인증서에 서명하는 데 사용됩니다.

10.1.1. CA 인증서

클러스터 CA 및 클라이언트 CA에는 모두 자체 서명된 공개 키 인증서가 있습니다.

Kafka 브로커는 클러스터 CA 또는 클라이언트 CA에서 서명한 인증서를 신뢰하도록 구성됩니다. 클라이언트가 연결할 필요가 없는 구성 요소(예: Zoo Cryostat)는 클러스터 CA에서 서명한 신뢰 인증서만 사용합니다. 외부 리스너에 대한 TLS 암호화가 비활성화되지 않는 한 클라이언트 애플리케이션은 클러스터 CA에서 서명한 인증서를 신뢰해야 합니다. 이는 상호 TLS 인증을 수행하는 클라이언트 애플리케이션에도 적용됩니다.

기본적으로 AMQ Streams는 클러스터 CA 또는 클라이언트 CA에서 발급한 CA 인증서를 자동으로 생성하고 갱신합니다. Kafka.spec.clusterCaKafka.spec.clientsCa 오브젝트에서 이러한 CA 인증서 관리를 구성할 수 있습니다. 사용자가 제공한 인증서는 갱신되지 않습니다.

클러스터 CA 또는 클라이언트 CA에 대한 자체 CA 인증서를 제공할 수 있습니다. 자세한 내용은 10.1.2절. “자체 CA 인증서 설치”의 내용을 참조하십시오. 자체 인증서를 제공하는 경우 필요한 경우 수동으로 갱신해야 합니다.

10.1.2. 자체 CA 인증서 설치

다음 절차에서는 Cluster Operator에서 생성한 CA 인증서 및 개인 키를 사용하는 대신 자체 CA 인증서 및 키를 설치하는 방법을 설명합니다.

Cluster Operator는 다음 시크릿을 자동으로 생성하고 갱신합니다.

CLUSTER-NAME-cluster-ca
클러스터 CA의 개인 키가 포함된 클러스터 시크릿입니다.
CLUSTER-NAME-cluster-ca-cert
클러스터 CA 인증서가 포함된 클러스터 시크릿입니다. 인증서에는 Kafka 브로커의 ID를 확인하는 공개 키가 포함되어 있습니다.
CLUSTER-NAME-clients-ca
클라이언트 CA의 개인 키가 포함된 클라이언트 시크릿입니다.
CLUSTER-NAME-clients-ca-cert
클라이언트 CA 인증서가 포함된 클라이언트 시크릿입니다. 인증서에는 Kafka 브로커에 액세스하는 클라이언트의 ID를 확인하는 공개 키가 포함되어 있습니다.

AMQ Streams는 기본적으로 이러한 시크릿을 사용합니다.

다음 절차에서는 자체 클러스터 또는 클라이언트 CA 인증서를 사용하도록 보안을 교체하는 단계를 설명합니다.

사전 요구 사항

  • Cluster Operator가 실행 중입니다.
  • Kafka 클러스터는 아직 배포되지 않았습니다.
  • 클러스터 CA 또는 클라이언트 CA의 PEM 형식의 고유한 X.509 인증서 및 키입니다.

    • 루트 CA가 아닌 클러스터 또는 클라이언트 CA를 사용하려면 전체 체인을 인증서 파일에 포함해야 합니다. 체인은 다음 순서로 설정되어야 합니다.

      1. 클러스터 또는 클라이언트 CA
      2. 하나 이상의 중간 CA
      3. 루트 CA
    • 체인의 모든 CA는 X509v3 기본 제약 조건 확장을 사용하여 구성해야 합니다. 기본 제한 조건은 인증서 체인의 경로 길이를 제한합니다.
  • 인증서를 변환하는 OpenSSL TLS 관리 툴입니다.

사전 준비 사항

Cluster Operator는 CLUSTER-NAME-cluster-ca-cert 보안에 대해 다음 파일을 생성합니다.

  • PEM 형식의 ca.crt 클러스터 인증서
  • PKCS #12 형식의 CA .p12 클러스터 인증서
  • PKCS #12 파일에 액세스하기 위한 CA .password

일부 애플리케이션은 PEM 인증서를 사용할 수 없으며 PKCS #12 인증서만 지원합니다. PKCS #12 형식으로 자체 클러스터 인증서를 추가할 수도 있습니다.

PKCS #12 형식의 클러스터 인증서가 없는 경우 OpenSSL TLS 관리 툴을 사용하여 ca.crt 파일에서 하나를 생성합니다.

certificate generation 명령 예

openssl pkcs12 -export -in ca.crt --nokeys -out ca.p12 -password pass:P12-PASSWORD -caname ca.crt
Copy to Clipboard Toggle word wrap

P12-PASSWORD 를 자신의 암호로 바꿉니다.

기본적으로 PEM 및 PKCS #12 형식의 인증서도 포함하는 CLUSTER-NAME-clients-ca-cert 시크릿에 대해 동일한 작업을 수행할 수 있습니다.

절차

  1. Cluster Operator가 생성한 CA 인증서를 교체합니다.

    1. 기존 보안을 삭제합니다.

      oc delete secret CA-CERTIFICATE-SECRET
      Copy to Clipboard Toggle word wrap

      CA-CERTIFICATE-SECRET시크릿 의 이름입니다.

      • clUSTER-NAME-cluster-ca-cert 클러스터 CA 인증서
      • CLUSTER-NAME-clients-ca-cert 클라이언트 CA 인증서

      CLUSTER-NAME 을 Kafka 클러스터 이름으로 교체합니다.

      "Not Exists" 오류를 무시합니다.

    2. 새 시크릿을 생성합니다.

      PEM 형식의 인증서가 있는 클라이언트 보안 생성

      oc create secret generic CLUSTER-NAME-clients-ca-cert --from-file=ca.crt=ca.crt
      Copy to Clipboard Toggle word wrap

      PEM 및 PKCS #12 형식의 인증서로 클러스터 시크릿 생성

      oc create secret generic CLUSTER-NAME-cluster-ca-cert \
        --from-file=ca.crt=ca.crt \
        --from-file=ca.p12=ca.p12 \
        --from-literal=ca.password=P12-PASSWORD
      Copy to Clipboard Toggle word wrap

  2. Cluster Operator가 생성한 개인 키를 교체합니다.

    1. 기존 보안을 삭제합니다.

      oc delete secret CA-KEY-SECRET
      Copy to Clipboard Toggle word wrap

      ca-KEY-SECRET 은 CA 키의 이름입니다.

      • CLUSTER-NAME-cluster-ca for the cluster CA key
      • CLUSTER-NAME-clients-ca for the clients CA 키
    2. 새 시크릿을 생성합니다.

      oc create secret generic CA-KEY-SECRET --from-file=ca.key=ca.key
      Copy to Clipboard Toggle word wrap
  3. 보안에 레이블을 지정합니다.

    oc label secret CA-CERTIFICATE-SECRET strimzi.io/kind=Kafka strimzi.io/cluster=CLUSTER-NAME
    Copy to Clipboard Toggle word wrap
    oc label secret CA-KEY-SECRET strimzi.io/kind=Kafka strimzi.io/cluster=CLUSTER-NAME
    Copy to Clipboard Toggle word wrap
    • strimzi.io/kind=Kafka 레이블은 Kafka 사용자 정의 리소스를 식별합니다.
    • 레이블 strimzi.io/cluster=CLUSTER-NAME 은 Kafka 클러스터를 식별합니다.
  4. 보안 주석

    oc annotate secret CA-CERTIFICATE-SECRET strimzi.io/ca-cert-generation=CA-CERTIFICATE-GENERATION
    Copy to Clipboard Toggle word wrap
    oc annotate secret CA-KEY-SECRET strimzi.io/ca-key-generation=CA-KEY-GENERATION
    Copy to Clipboard Toggle word wrap
    • 주석 strimzi.io/ca-cert-generation=CA-CERTIFICATE-GENERATION 은 새 CA 인증서의 생성을 정의합니다.
    • 주석 strimzi.io/ca-key-generation=CA-KEY-GENERATION 은 새 CA 키 생성을 정의합니다.

      Cluster Operator에서 자동으로 생성한 CA 인증서를 교체하는 경우 기존 주석에서 더 높은 증분 값을 사용하고 CA 키 교체 절차 를 따르십시오. Cluster Operator에서 자동으로 생성한 CA 인증서가 없는 경우 0(zero)에서 자체 CA 인증서에 대한 증분 값(strimzi.io/ca-cert-generation=0)으로 시작합니다. 인증서를 갱신할 때 더 높은 증분 값을 설정합니다.

  5. 생성된 CA를 사용하지 않도록 Kafka.spec.clusterCa 또는 Kafka.spec.clientsCa 오브젝트를 구성하여 클러스터에 대한 Kafka 리소스를 생성합니다.

    사용자가 제공한 인증서를 사용하도록 클러스터 CA를 구성하는 조각 모음 Kafka 리소스의 예

    kind: Kafka
    version: kafka.strimzi.io/v1beta2
    spec:
      # ...
      clusterCa:
        generateCertificateAuthority: false
    Copy to Clipboard Toggle word wrap

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동