Client File Configuration

为确保安全通信,请完成 Kafka 客户端相关的加密传输配置。

注意事项

以下操作应在集群中的 control node 上进行。

必需文件预览

根据 Kafka 实例的认证类型准备文件。每个文件与 Kafka 实例一一对应。若存在多个实例,则每个文件需分别配置,相关文件可放置于不同路径。对于集群内访问场景,客户端路径示例为 /home/kafka

加密方式认证方式必需文件
集群内:TLS
外部:TLS
SCRAM-SHA-512 或无认证CA 证书:ca.p12
客户端配置文件:client-ssl.properties
集群内:TLS
外部:TLS
TLSCA 证书:ca.p12
用户证书:user.p12
客户端配置文件:client-ssl.properties

I. 配置 CA 证书

  1. 生成 CA 证书。

    $ kubectl -n {Kafka instance namespace} get secret {Kafka instance name}-cluster-ca-cert -o jsonpath='{.data.ca\.p12}' | base64 -d > ca.p12
  2. 生成 CA 证书密码,请记录该密码。

    $ kubectl -n {Kafka instance namespace} get secret {Kafka instance name}-cluster-ca-cert -o jsonpath='{.data.ca\.password}' | base64 -d

II. 用户证书

  1. 生成用户证书。

    $ kubectl -n {Kafka instance namespace} get secret {Kafka user name} -o jsonpath='{.data.user\.p12}' | base64 -d > user.p12
  2. 生成用户证书密码,请记录该密码。

    $ kubectl -n {Kafka instance namespace} get secret {Kafka user name} -o jsonpath='{.data.user\.password}' | base64 -d

III. 配置客户端配置文件

client-ssl.properties(无认证)

$ cat << EOF > client-ssl.properties
security.protocol=SSL
ssl.truststore.type=PKCS12
ssl.truststore.location=/home/kafka/ca.p12
ssl.truststore.password={CA certificate password}
EOF

client.properties(SCRAM-SHA-512 认证)

前提条件:在 User Management 标签页中,点击 secret 字典并记录 password 字段的值。

$ cat << EOF > client.properties
security.protocol=SASL_SSL
ssl.truststore.type=PKCS12
ssl.truststore.location=/home/kafka/ca.p12
ssl.truststore.password={CA certificate password}

sasl.mechanism=SCRAM-SHA-512
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
    username="{Kafka user name}" \
    password="{Kafka user password}";

EOF

client-ssl.properties(TLS 认证)

$ cat << EOF > client-ssl.properties
security.protocol=SSL
ssl.truststore.type=PKCS12
ssl.truststore.location={client path}/ca.p12
ssl.truststore.password={CA certificate password}

ssl.keystore.type=PKCS12
ssl.keystore.location=/home/kafka/user.p12
ssl.keystore.password={user certificate password}
EOF
TIP

若需开启外部访问,请在配置文件中添加 ssl.endpoint.identification.algorithm=。

IV. 将文件复制到客户端

提示:请参考必需文件预览表,确定您的访问方式所需的文件。

集群内访问

确保必需文件放置于客户端配置文件中指定的路径。

$ kubectl cp ./{required file name} {Kafka client namespace}/{Kafka client Pod name}:/home/kafka/ -c kafka

外部访问

确保必需文件放置于客户端配置文件中指定的路径。