温馨提示×

debian kafka如何开tls

小樊
44
2026-10-09 19:09:39
栏目: 智能运维

下面以 Debian + Kafka(以官方二进制包为例) 说明如何开启 TLS(SSL),步骤偏向实战,适用于 Kafka 2.x / 3.x。


一、总体思路

Kafka 的 TLS 主要涉及 3 个部分:

  1. Broker 端:开启 listeners=SSL://...
  2. 客户端(生产者 / 消费者 / CLI):配置 truststore
  3. 证书:
    • CA(可选但推荐)
    • 服务端证书(broker)
    • 客户端证书(可选,做双向认证)

二、生成证书(在 Debian 上)

1. 创建目录

sudo mkdir -p /opt/kafka/ssl
cd /opt/kafka/ssl

2. 生成 CA(自签)

openssl req -new -x509 -keyout ca-key -out ca-cert -days 3650 \
  -subj "/CN=KafkaCA"

3. 生成 Broker 证书

keytool -genkey -alias kafka -keyalg RSA \
  -keystore kafka.server.keystore.jks \
  -validity 3650 \
  -dname "CN=kafka.example.com"

⚠️ CN 最好和 broker 的 hostname / DNS 一致

4. 签名 Broker 证书

keytool -certreq -alias kafka \
  -keystore kafka.server.keystore.jks \
  -file kafka.csr

openssl x509 -req -CA ca-cert -CAkey ca-key \
  -in kafka.csr -out kafka.cert -days 3650 \
  -CAcreateserial

keytool -import -alias ca -keystore kafka.server.keystore.jks -file ca-cert
keytool -import -alias kafka -keystore kafka.server.keystore.jks -file kafka.cert

5. 生成 Truststore

keytool -import -alias ca -keystore kafka.client.truststore.jks -file ca-cert

三、配置 Kafka Broker(server.properties)

编辑:

/opt/kafka/config/server.properties

1. 修改 listeners

listeners=SSL://:9093
advertised.listeners=SSL://kafka.example.com:9093

2. SSL 配置

ssl.keystore.location=/opt/kafka/ssl/kafka.server.keystore.jks
ssl.keystore.password=changeit
ssl.key.password=changeit

ssl.truststore.location=/opt/kafka/ssl/kafka.client.truststore.jks
ssl.truststore.password=changeit

ssl.client.auth=none
# none | requested | required

required = 双向 TLS(mTLS)

3. 重启 Kafka

sudo systemctl restart kafka
# 或
/opt/kafka/bin/kafka-server-stop.sh
/opt/kafka/bin/kafka-server-start.sh -daemon /opt/kafka/config/server.properties

四、客户端配置(生产者 / 消费者)

producer.properties

bootstrap.servers=kafka.example.com:9093
security.protocol=SSL
ssl.truststore.location=/opt/kafka/ssl/kafka.client.truststore.jks
ssl.truststore.password=changeit

测试

kafka-console-producer.sh \
  --bootstrap-server kafka.example.com:9093 \
  --topic test \
  --producer.config producer.properties
kafka-console-consumer.sh \
  --bootstrap-server kafka.example.com:9093 \
  --topic test \
  --from-beginning \
  --consumer.config consumer.properties

五、开启双向 TLS(可选)

1. 生成客户端证书

类似 broker 流程,用 CA 签名

2. Broker 配置

ssl.client.auth=required

3. 客户端增加

ssl.keystore.location=/path/client.keystore.jks
ssl.keystore.password=changeit
ssl.key.password=changeit

六、常见问题

1. hostname 校验失败

ssl.endpoint.identification.algorithm=

(关闭校验,仅测试用)

2. Debian 端口未开放

sudo ufw allow 9093/tcp

3. Java 版本

确保 Java 8+

java -version

如果你愿意,我可以:

  • 给你 systemd 服务配置
  • 帮你 用 Let’s Encrypt / 真实 CA
  • 或 Kafka + SASL + TLS 一起配

直接说你用的是 Kafka 版本 + 是否 mTLS 即可。

0 踩