Spring Boot Kafka生产者无法通过SSL连接集群求助
解决Spring Boot Kafka生产者连接SSL集群超时问题
从你的描述和日志来看,核心问题是Kafka生产者没有正确启用SSL配置——启动日志里显示security.protocol为PLAINTEXT,但你连接的是Kafka的SSL端口(9093),这就导致生产者用明文和Broker通信,被Broker主动断开(日志里的EOFException就是直接证据),最终触发元数据获取超时。
问题根源
你当前的配置存在两个关键问题:
- 只给
spring.kafka.admin设置了ssl.protocol=ssl,但生产者的SSL启用开关没有打开,导致生产者默认使用明文协议; - 混淆了配置层级:
server.ssl.*是Spring Boot Web服务的SSL配置,和Kafka生产者完全无关,这部分配置可以直接移除。
修正方案
你需要明确指定Kafka客户端使用SSL协议,同时确保所有SSL证书配置正确绑定到Kafka生产者:
1. 修正application.properties配置
添加全局SSL协议配置,让生产者、消费者、Admin客户端都继承这个设置,同时保留你的证书配置:
# 全局指定Kafka客户端使用SSL协议 spring.kafka.security.protocol=SSL # SSL证书相关配置(保留你已有的正确配置) spring.kafka.ssl.key-store-type=jks spring.kafka.ssl.trust-store-location=file:/home/ec2-user/truststore.jks spring.kafka.ssl.trust-store-password=test1234 spring.kafka.ssl.key-store-location=file:/home/ec2-user/keystore.jks spring.kafka.ssl.key-store-password=test1234 spring.kafka.ssl.key-password=test1234 # 生产者核心配置 spring.kafka.producer.bootstrap-servers=broker1.kafka.poc.com:9093,broker3.kafka.poc.com:9093,broker4.kafka.poc.com:9093,broker5.kafka.poc.com:9093 spring.kafka.producer.client-id=sym
如果只想给生产者单独配置SSL,也可以把
spring.kafka.security.protocol=SSL改成spring.kafka.producer.security.protocol=SSL,但全局配置更简洁统一。
2. 验证配置生效
启动应用后,查看日志里的ProducerConfig输出,确认security.protocol已经变成SSL(而非PLAINTEXT)。配置正确的情况下,日志会出现SSL握手相关的调试信息,不再出现EOFException和循环断开重连的情况。
额外检查点
- 确认
truststore.jks和keystore.jks的路径正确,且运行应用的ec2-user有读取这些文件的权限; - 如果Kafka Broker启用了双向认证,确保你的keystore包含Broker信任的客户端证书;如果是单向认证,确认truststore包含Broker的CA证书;
- 可以临时调整生产者元数据超时时间(
spring.kafka.producer.metadata.max.age.ms)排除网络延迟影响,但核心还是要解决SSL配置未生效的问题。
内容的提问来源于stack exchange,提问作者swinters
相关产品推荐
相关产品推荐

