You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kraft模式下Kafka配置SASL_SSL遇连接认证问题求助

Kraft模式Kafka配置SASL_SSL故障排查与解决

核心问题分析

你的场景中Broker启动日志正常,但客户端连接不同监听器端口时出现两类错误:

  • 连接9092(BROKER监听器)时认证终止:说明客户端与Broker的安全协议不匹配,或SSL/SASL配置存在冲突
  • 连接9095(SASL_SSL监听器)时无法建立连接:大概率是客户端配置缺失、监听器映射错误或网络端口未开放

以下是针对性的排查与修复步骤:


1. 修正监听器安全协议映射

Kafka的listener.security.protocol.map是核心配置,必须明确每个监听器对应的安全协议,否则监听器会默认使用Plaintext协议,导致客户端SSL/SASL连接失败。

正确配置示例(server.properties):

# 监听器定义
listeners=BROKER://ip:9092,CONTROLLER://ip:19092,SASL_SSL://ip:9095
# 对外暴露的监听器(必须与客户端可访问地址一致)
advertised.listeners=BROKER://ip:9092,SASL_SSL://ip:9095
# 关键:绑定监听器与安全协议
listener.security.protocol.map=BROKER:SSL,CONTROLLER:PLAINTEXT,SASL_SSL:SASL_SSL
  • 若你的BROKER监听器需要纯SSL(无SASL),则映射为BROKER:SSL
  • SASL_SSL监听器必须映射为SASL_SSL:SASL_SSL,同时需配置SASL认证参数

2. 匹配客户端与监听器的配置

客户端配置必须与目标监听器的安全协议完全匹配:

场景1:连接9092(纯SSL监听器)

client.properties需配置纯SSL参数:

bootstrap.servers=ip:9092
security.protocol=SSL
# SSL证书相关配置
ssl.truststore.location=/opt/kafka/config/ssl/client.truststore.jks
ssl.truststore.password=your-truststore-pass
ssl.endpoint.identification.algorithm=  # 自签名证书需关闭此验证

场景2:连接9095(SASL_SSL监听器)

client.properties需同时配置SSL和SASL参数,缺一不可:

bootstrap.servers=ip:9095
security.protocol=SASL_SSL
# SASL PLAIN认证配置
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
    username="kafka-admin" \
    password="your-admin-pass";
# SSL证书相关配置
ssl.truststore.location=/opt/kafka/config/ssl/client.truststore.jks
ssl.truststore.password=your-truststore-pass
ssl.endpoint.identification.algorithm=

3. 验证SASL JAAS配置有效性

Broker端的SASL认证依赖正确的JAAS配置,有两种配置方式:

方式1:在server.properties中直接配置(推荐)

针对SASL_SSL监听器单独配置JAAS:

sasl.enabled.mechanisms=PLAIN
# 注意监听器名称转小写+下划线:sasl_ssl
listener.name.sasl_ssl.plain.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
    username="kafka-admin" \
    password="your-admin-pass" \
    user_kafka-admin="your-admin-pass";  # 定义允许连接的用户

方式2:通过环境变量加载JAAS文件

启动Broker前设置环境变量:

export KAFKA_OPTS="-Djava.security.auth.login.config=/opt/kafka/config/kafka_server_jaas.conf"

JAAS文件内容示例:

KafkaServer {
    org.apache.kafka.common.security.plain.PlainLoginModule required
    username="kafka-admin"
    password="your-admin-pass"
    user_kafka-admin="your-admin-pass";
};

4. 排查网络与证书问题

  • 端口连通性:用telnet ip 9095或nc -zv ip 9095测试端口是否开放,确保防火墙/安全组放行9092、9095端口
  • SSL证书有效性:用openssl测试Broker的SSL端口,检查证书是否正常:
    openssl s_client -connect ip:9095
    
  • 证书权限:确保Kafka进程用户对keystore/truststore文件有读取权限

5. 验证Controller监听器配置

Kraft模式下需确保Controller监听器使用Plaintext(默认),并正确绑定:

controller.listener.names=CONTROLLER
listener.security.protocol.map=...,CONTROLLER:PLAINTEXT

内容的提问来源于stack exchange,提问作者Aroque R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 10:05:18