使用.net使用TrustStore / KeyStore证书连接到Kafka



我正在尝试使用。net 6与SaslSsl连接到KAFKA。我没有托管服务器,这是提供的连接详细信息:

ssl.truststore.location=truststore.jks
ssl.truststore.password=xx
ssl.keystore.location=keystore.jks
ssl.keystore.password=xx
ssl.key.password=xx
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required 
username="user" 
password="xx;

不幸的是。net不支持JKS文件,我收到的是转换后的PEM文件。(信任库。Pem和keystore.pem). net也不支持信任存储库,所以我们需要使用PEM文件作为证书。

你知道我需要为我的情况使用什么确切的设置,以便我可以用相应的密码定义证书吗?

ConsumerConfig config = new ConsumerConfig
{
Debug = "broker,topic,msg,security",
BootstrapServers = "xx",
GroupId = "xx",
AutoOffsetReset = AutoOffsetReset.Earliest,
EnableAutoCommit = false,
SslCaLocation = "truststore.pem",
SslCertificateLocation = "keystore.pem",
SecurityProtocol = SecurityProtocol.SaslSsl,
SaslMechanism = SaslMechanism.Plain,
SaslUsername = "user",
SaslPassword = "xx"
};

我得到的错误:

Certificate verify failed: broker certificate could not be verified, verify that ssl.ca.location is correctly configured or root CA certificates are installed

为什么同时使用证书和用户名/密码?检查什么是您的代理的身份验证机制。

对于我的例子,我在代理中使用基本身份验证。所以我只需要使用用户名和密码。

var config = new ConsumerConfig
{
BootstrapServers = "my broker urls",
GroupId = groupName,
AutoOffsetReset = AutoOffsetReset.Latest,
SecurityProtocol = SecurityProtocol.SaslSsl,
SaslMechanism = SaslMechanism.ScramSha512,
SaslUsername = "myusername",
SaslPassword = "mypassword",
EnableAutoCommit = false
};

最新更新