我正在尝试连接到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
1条答案
按热度按时间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-password
、spring.kafka.ssl.trust-store-location
和spring.kafka.ssl.trust-store-password
中的一个或多个。spring.kfka.topic
,即使纠正了错字。你可能需要仔细检查。也就是说,很明显你用某种方法得到了
spring.kafka.bootstrap-server
的工作,我不能用相同版本的库来重现,所以也许你是手动做的?这样你就必须手动做所有的事情,比如通过@Value
。此外,如果要使用文件系统上的文件,则需要使用
file:
协议指定位置。