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

Spring Boot Kafka生产者无法通过SSL连接集群求助

解决Spring Boot Kafka生产者连接SSL集群超时问题

从你的描述和日志来看,核心问题是Kafka生产者没有正确启用SSL配置——启动日志里显示security.protocol为PLAINTEXT,但你连接的是Kafka的SSL端口(9093),这就导致生产者用明文和Broker通信,被Broker主动断开(日志里的EOFException就是直接证据),最终触发元数据获取超时。

问题根源

你当前的配置存在两个关键问题:

  1. 只给spring.kafka.admin设置了ssl.protocol=ssl,但生产者的SSL启用开关没有打开,导致生产者默认使用明文协议;
  2. 混淆了配置层级: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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:54:00