首页 / 平台管理 / 应用商店管理 / Operators / 使用 Operator / Kafka / 加密配置

加密配置

为确保通信安全,访问 Kafka前,请务必对 Kafka 进行加密配置。

下述操作可在集群中任一节点上进行。

一、配置 CA 证书

  1. 生成 CA 证书。

    $ kubectl -n {Kafka 实例所在命名空间} get secret {Kafka 实例名称-cluster-ca-cert} -o jsonpath='{.data.ca\.crt}' | base64 -d > ca.crt
  2. 生成 CA 证书的密码。请记录此密码。

    $ kubectl -n {Kafka 实例所在命名空间} get secret {Kafka 实例名称-cluster-ca-cert} -o jsonpath='{.data.ca\.password}' | base64 -d
  3. 将 CA 证书导入 user-truststore.jks 文件。

    $ keytool -keystore user-truststore.jks -alias CARoot -import -file ca.crt
    Enter keystore password:CA 证书的密码
    Re-enter new password:CA 证书的密码
    Trust this certificate? [no]:y
    Certificate was added to keystore

二、配置用户证书(仅 TLS 认证方式)

  1. 生成用户证书。

    $ kubectl -n {Kafka 实例所在命名空间} get secret {KafkaUser 实例名称} -o jsonpath='{.data.user\.p12}' | base64 -d > user.p12
  2. 生成用户证书的密码。请记录此密码。

    $ kubectl -n {Kafka 实例所在命名空间} get secret {KafkaUser 实例名称} -o jsonpath='{.data.user\.password}' | base64 -d
  3. 将用户证书导入 user-keystore.jks 文件。

    $ keytool -importkeystore -srckeystore user.p12 -destkeystore user-keystore.jks -deststoretype pkcs12
    Importing keystore user.p12 to user-keystore.jks...
    Enter destination keystore password:用户证书的密码
    Re-enter new password:用户证书的密码
    Enter source keystore password:用户证书的密码
    Entry for alias my-user successfully imported.
    Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

三、配置客户端连接文件

client-ssl.properties (TLS 认证方式)

client.properties (scram-sha-512 认证方式)

说明KafkaUser 密码 可在容器平台的 配置 > 保密字典 页面,从名称与 KafkaUser 实例同名的保密字典中查得。

$ cat << EOF > client.properties
security.protocol=SSL
ssl.truststore.location=/home/kafka/user-truststore.jks
ssl.truststore.password={CA 证书的密码}
 
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="{KafkaUser 名称}" \
    password="{KafkaUser 密码}";
 
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
EOF
$ cat << EOF > client.properties
security.protocol=SSL
ssl.truststore.location={客户端所在路径}/user-truststore.jks
ssl.truststore.password={CA 证书的密码}
ssl.endpoint.identification.algorithm=
 
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="{KafkaUser 名称}" \
    password="{KafkaUser 密码}";
 
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
EOF

四、将文件拷贝至客户端

包括 user-keystore.jksuser-truststore.jks 和客户端连接文件。

集群内访问

$ kubectl cp ./{文件名称} {Kafka 实例所在命名空间}/{Pod 名称}:/home/kafka/ -c kafka

说明Pod 名称 示例为 {Kafka 实例名称-kafka-0}

集群外访问

请确保 user-keystore.jksuser-truststore.jks 文件放置在客户端连接文件中提及的路径下。