使用动态加载的证书在 Spring 中设置与 Kafka 的 mTLS 连接

问题描述 投票:0回答:1

我正在开发一个 Spring Kafka 项目,该项目使用以下库

org.springframework.kafka:spring-kafka:3.0.12
连接到 Kafka 服务器。它动态加载带有来自 Azure KeyVault 的密钥的证书,并需要使用它与 Kafka 建立 mTLS 连接。

一种方法是设置属性

ssl.keystore.location
ssl.truststore.location
,但这些属性需要文件系统存储的密钥库的路径,而我没有。

另一种方法是通过提供创建

ssl.engine.factory.class
SSLContext
的类的路径来使用属性
SSLEnginge
。这种方法的问题是它无法访问 Spring 上下文 bean,因为此类的实例是由 Kafka 库创建的。我需要使用 bean 来获取带有密钥的证书。

有没有其他解决方案可以满足要求?

spring ssl apache-kafka spring-kafka
1个回答
0
投票

Kafka 引入了以下属性来解决该问题,以便可以在应用程序启动期间加载私钥和信任存储并在 Kafka 属性中进行设置:

ssl.keystore.key=-----BEGIN PRIVATE KEY-----\n$base64Pkcs8EncodedKey\n-----END PRIVATE KEY-----
ssl.keystore.certificate.chain=-----BEGIN CERTIFICATE-----\n$base64EncodedCert\n-----END CERTIFICATE-----
ssl.keystore.type=PEM
ssl.truststore.certificates=-----BEGIN CERTIFICATE-----\n$base64EncodedCert\n-----END CERTIFICATE-----
ssl.truststore.type=PEM
© www.soinside.com 2019 - 2024. All rights reserved.