繁体   English   中英

Spring-Kafka 没有选择 SSL 配置

[英]Spring-Kafka not picking up SSL config

我正在尝试连接到 Kafka 代理,该代理强制执行 2 路 SSL/TLS 来验证和授权客户端。 我已经通过正确的权限创建了证书签名并存储在我的本地用户目录中。 我在用

  • Spring-Kafka 2.8.5
  • Spring-Boot 2.6.7

我的application.properties

spring.kafka.bootstrap-server=vera-kafka-dev.lia.com:49092
spring.kfka.topic=lucija-eliza-topic
spring.kafka.security.protocol=SSL
spring.kafka.ssl.keystore.location=/c/users/sibusiso/certs/my-test-cert.jks
spring.kafka.ssl.keystore.password=mysecretpwd
spring.kafka.ssl.truststore.location=/c/users/sibusiso/certs/my-test-cert.jks
spring.kafka.ssl.truststore.password=mysecretpwd

但是 ProducerConfig 值正在打印

acks= -1
batch.size = 16384
bootstrap.servers = [vera-kafka-dev.lia.com:49092]
buffer.memory = 33554432
...
security.protocol = PLAINTEXT
security.providers = null
ssl.enabled.protocols = [TLSv1.2, TLSv1.3]
ssl.endpoint.identification.algorithm = https
ssl.key.password = null
ssl.keysore.location = null
ssl.keystore.password = null
ssl.keystore.type = JKS
ssl.protocol = TLSv1.3
...
ssl.trustsore.location = null
ssl.truststore.password = null
ssl.truststore.type = JKS
...

所以看看这个 output 看起来应用程序没有从 application.properties 文件中获取值。 显然与经纪人的连接已断开。

我错过了什么吗? TIA

基本上我同意加里·拉塞尔的评论。 您必须要么利用自动配置功能,要么声明一个KafkaProperties bean,或者手动完成所有操作。

关于属性,名称似乎存在一些差异 它们最精确的定义在 Z68995FCBF432492D1548Z94DAC04 文件中的/META-INF/spring-configuration-metadata.json/META-INF/additional-spring-configuration-metadata.json中。 如果您检查这些文件,最重要的是 Spring 启动的自动配置 jar 中的一个(例如spring-boot-autoconfigure-2.6.7.jar的属性名称) :

  • spring.kafka.bootstrap-server应该是spring.kafka.bootstrap-servers的复数形式;
  • spring.kafka.ssl.keystore.location should be spring.kafka.ssl.key-store-location ; spring.kafka.ssl.keystore-location也有效,只是它已被弃用。
  • Similarly, the rest of the properties' names are: spring.kafka.ssl.key-store-password , spring.kafka.ssl.trust-store-location , and spring.kafka.ssl.trust-store-password .
  • 即使纠正了错字,我也不确定spring.kfka.topic是什么。 您可能需要仔细检查。

也就是说,显然你有spring.kafka.bootstrap-server以某种方式工作,我无法使用相同版本的库重现,所以也许你是手动做的? 这样您就必须手动完成所有操作,例如通过@Value

此外,如果您想使用文件系统上的文件,您需要使用file:协议指定位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM