温馨提示×

ubuntu kafka配置如何开启ssl

小樊
41
2026-09-14 17:31:37
栏目: 云计算

下面以 Ubuntu + Kafka(以官方 Apache Kafka 为例) 说明如何开启 SSL(TLS),包含服务端配置客户端配置,以及常见坑点。


一、前提说明

  • Kafka 版本:2.x / 3.x 均适用
  • 假设 Kafka 安装目录:/opt/kafka
  • 主机名:kafka.example.com
  • 使用 自签名证书(生产建议用 CA 签名)

二、生成 SSL 证书(服务端)

1. 生成 Kafka 服务端 keystore

keytool -genkey -alias kafka-server \
  -keyalg RSA -keysize 2048 \
  -validity 365 \
  -keystore kafka.server.keystore.jks \
  -storepass changeit \
  -keypass changeit \
  -dname "CN=kafka.example.com"

⚠️ CN 必须和客户端连接的主机名一致(否则 SSL 握手失败)


2. 导出证书

keytool -export -alias kafka-server \
  -file kafka.server.cert \
  -keystore kafka.server.keystore.jks \
  -storepass changeit

3. 生成 truststore(客户端用)

keytool -import -alias kafka-server \
  -file kafka.server.cert \
  -keystore kafka.client.truststore.jks \
  -storepass changeit -noprompt

4. 放置文件

sudo mkdir -p /opt/kafka/ssl
sudo cp kafka.server.keystore.jks /opt/kafka/ssl/
sudo cp kafka.client.truststore.jks /opt/kafka/ssl/
sudo chown -R kafka:kafka /opt/kafka/ssl

三、Kafka 服务端 SSL 配置

编辑:

/opt/kafka/config/server.properties

1. 启用 SSL 监听

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.enabled.protocols=TLSv1.2
ssl.endpoint.identification.algorithm=HTTPS

ssl.endpoint.identification.algorithm=HTTPS
可防止 hostname 校验被绕过(推荐)


四、重启 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

查看日志:

tail -f /opt/kafka/logs/server.log

五、客户端使用 SSL(示例)

1. 生产者测试

/opt/kafka/bin/kafka-console-producer.sh \
  --bootstrap-server kafka.example.com:9093 \
  --topic test \
  --producer.config client-ssl.properties

client-ssl.properties

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

2. 消费者测试

/opt/kafka/bin/kafka-console-consumer.sh \
  --bootstrap-server kafka.example.com:9093 \
  --topic test --from-beginning \
  --consumer.config client-ssl.properties

六、常见问题

❌ SSL handshake failed

  • CN 和连接地址不一致
  • 未配置 advertised.listeners

❌ hostname verification failed

ssl.endpoint.identification.algorithm=

(不推荐,仅调试用)


七、进阶(可选)

  • ✅ SSL + SASL(SSL 加密 + 身份认证)
  • ✅ 使用 CA 签名证书
  • ✅ 双向 SSL(client-auth)

如果你需要 Kafka + SSL + SASL/SCRAMDocker / Kraft 模式 配置,我可以继续补充。

0