apache-kafka Spring-Kafka未获取SSL配置

jjjwad0x  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(156)

我正在尝试连接到Kafka代理,它强制执行双向SSL/TLS来验证和授权客户端。我已经创建了由正确授权机构签名的证书,并将其存储在我的本地用户目录中。我正在使用

  • 2.8.5Spring-Kafka
  • Spring Boot2.6.7

我的application.properties

spring.kafka.bootstrap-server=vera-kafka-dev.lia.com:49092
spring.kafka.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
...

从这个输出来看,应用程序似乎没有从www.example.com文件中获取值application.properties,显然与代理连接断开了
我错过了什么吗?TIA

neskvpey

neskvpey1#

基本上我同意Garry Russell的意见,你要么利用自动配置功能,要么声明一个KafkaProperties bean,要么手动完成所有的事情。
关于属性,似乎在名称上有一些 * 差异 *。它们最精确的定义在jar文件中的/META-INF/spring-configuration-metadata.json/META-INF/additional-spring-configuration-metadata.json中。如果您检查这些文件,最重要的是Sping Boot 的自动配置jar中的一个(例如spring-boot-autoconfigure-2.6.7.jar),您会发现文件中的一些属性名称不太正确:

  • spring.kafka.bootstrap-server应为复数形式的spring.kafka.bootstrap-servers;
  • spring.kafka.ssl.keystore.location应为spring.kafka.ssl.key-store-location; spring.kafka.ssl.keystore-location也可以使用,只是不建议使用。
  • 同样,其余属性的名称为:spring.kafka.ssl.key-store-passwordspring.kafka.ssl.trust-store-locationspring.kafka.ssl.trust-store-password中的一个或多个。
  • 我不知道什么spring.kfka.topic,即使纠正了错字。你可能需要仔细检查。

也就是说,很明显你用某种方法得到了spring.kafka.bootstrap-server的工作,我不能用相同版本的库来重现,所以也许你是手动做的?这样你就必须手动做所有的事情,比如通过@Value
此外,如果要使用文件系统上的文件,则需要使用file:协议指定位置。

相关问题