18.6. 자체 CA 인증서 및 개인 키 사용
Cluster Operator에서 생성한 기본값을 사용하는 대신 자체 CA 인증서 및 개인 키를 설치하고 사용합니다. 클러스터 및 클라이언트 CA 인증서 및 개인 키를 교체할 수 있습니다.
다음과 같은 방법으로 자체 CA 인증서 및 개인 키를 사용하여 전환할 수 있습니다.
- Kafka 클러스터를 배포하기 전에 자체 CA 인증서 및 개인 키 설치
- Kafka 클러스터를 배포한 후 기본 CA 인증서 및 개인 키를 고유한 인증서로 교체
Kafka 클러스터를 배포한 후 기본 CA 인증서 및 개인 키를 교체하는 단계는 자체 CA 인증서 및 개인 키를 갱신하는 데 사용되는 것과 동일합니다.
자체 인증서를 사용하는 경우 자동으로 갱신되지 않습니다. 만료되기 전에 CA 인증서 및 개인 키를 갱신해야 합니다.
갱신 옵션:
- CA 인증서만 갱신
- CA 인증서 및 개인 키 갱신(또는 기본값 교체)
18.6.1. 자체 CA 인증서 및 개인 키 설치 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Operator에서 생성한 클러스터 및 클라이언트 CA 인증서 및 개인 키를 사용하는 대신 자체 CA 인증서 및 개인 키를 설치합니다.
기본적으로 Apache Kafka의 Streams는 자동으로 갱신되는 다음 클러스터 CA 및 클라이언트 CA 시크릿을 사용합니다.
클러스터 CA 시크릿
-
<cluster_name>-cluster-ca -
<cluster_name>-cluster-ca-cert
-
클라이언트 CA 시크릿
-
<cluster_name>-clients-ca -
<cluster_name>-clients-ca-cert
-
자체 인증서를 설치하려면 동일한 이름을 사용합니다.
사전 요구 사항
- Cluster Operator가 실행 중입니다.
Kafka 클러스터는 아직 배포되지 않았습니다.
Kafka 클러스터를 이미 배포한 경우 기본 CA 인증서를 자체 인증서로 교체할 수 있습니다.
클러스터 CA 또는 클라이언트 CA의 PEM 형식의 고유한 X.509 인증서 및 키입니다.
루트 CA가 아닌 클러스터 또는 클라이언트 CA를 사용하려면 전체 체인을 인증서 파일에 포함해야 합니다. 체인은 다음 순서로 설정되어야 합니다.
- 클러스터 또는 클라이언트 CA
- 하나 이상의 중간 CA
- 루트 CA
- 체인의 모든 CA는 X509v3 기본 제약 조건 확장을 사용하여 구성해야 합니다. 기본 제한 조건은 인증서 체인의 경로 길이를 제한합니다.
- 인증서를 변환하는 OpenSSL TLS 관리 툴입니다.
사전 준비 사항
Cluster Operator는 PEM(Privacy Enhanced Mail) 및 PKCS #12(Public-Key Cryptography Standards) 형식으로 키와 인증서를 생성합니다. PEM 형식의 키와 인증서만 Apache Kafka의 Streams에서 내부적으로 사용됩니다. PKCS #12 저장소는 PEM 형식 사용을 직접 지원하지 않는 사용자 애플리케이션에만 있습니다. 사용자 정의 CA 인증서를 사용하는 경우 PKCS #12 저장소 및 해당 암호를 시크릿에 추가하는 것은 선택 사항입니다.
프로세스
CA 인증서가 포함된 새 보안을 생성합니다.
PEM 형식의 인증서가 있는 클라이언트 보안 생성
oc create secret generic <cluster_name>-clients-ca-cert --from-file=ca.crt=ca.crtPEM 및 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<cluster_name>을 Kafka 클러스터 이름으로 바꿉니다.
개인 키가 포함된 새 보안을 생성합니다.
oc create secret generic <ca_key_secret> --from-file=ca.key=ca.key보안에 레이블을 지정합니다.
oc label secret <ca_certificate_secret> strimzi.io/kind=Kafka strimzi.io/cluster="<cluster_name>"oc label secret <ca_key_secret> strimzi.io/kind=Kafka strimzi.io/cluster="<cluster_name>"-
strimzi.io/kind=Kafka레이블은 Kafka 사용자 정의 리소스를 식별합니다. -
strimzi.io/cluster="<cluster_name>"레이블은 Kafka 클러스터를 식별합니다.
-
보안 주석
oc annotate secret <ca_certificate_secret> strimzi.io/ca-cert-generation="<ca_certificate_generation>"oc annotate secret <ca_key_secret> strimzi.io/ca-key-generation="<ca_key_generation>"-
주석
strimzi.io/ca-cert-generation="<ca_certificate_generation>"은 새 CA 인증서 생성을 정의합니다. 주석
strimzi.io/ca-key-generation="<ca_key_generation>"은 새 CA 키 생성을 정의합니다.0(zero)에서 자체 CA 인증서에 대한 증분 값(sti
mzi.io/ca-cert-generation=0)으로 시작합니다. 인증서를 갱신할 때 더 높은 증분 값을 설정합니다.
-
주석
생성된 CA를 사용하지 않도록
또는Kafka.spec.clusterCaKafka.spec.clientsCa오브젝트를 구성하여 클러스터에 대한 Kafka 리소스를 생성합니다.사용자가 제공한 인증서를 사용하도록 클러스터 CA를 구성하는 조각 모음
Kafka리소스의 예kind: Kafka version: kafka.strimzi.io/v1beta2 spec: # ... clusterCa: generateCertificateAuthority: false