我在让confluent-kafka-dotnet库与SSL一起工作时遇到了问题。使用SSL一切都很好,我可以通过使用kafkas自己的scritps让SSL工作,如下所示。
> .\kafka-console-producer.bat --broker-list domain.net:9094 --topic
busit-test --producer.config client-ssl.propertiesclient-ssl.properties内容:
security.protocol=SSL
ssl.truststore.location=C:/Certificates/store.jks
ssl.truststore.password=mysecret我在cert.crt文件中获得了ca,这就是我如何通过使用以下命令获得store.jks的:
keytool -importcert -keystore store.jks -alias issuing -file cert.crt要使用confluent-kafka-dotnet,我需要根据文档( https://github.com/edenhill/librdkafka/wiki/Using-SSL-with-librdkafka )对其进行配置。
metadata.broker.list=at_least_one_of_the_brokers
security.protocol=ssl
# CA certificate file for verifying the broker's certificate.
ssl.ca.location=ca-cert
# Client's certificate
ssl.certificate.location=client_?????_client.pem
# Client's key
ssl.key.location=client_?????_client.key
# Key password, if any.
ssl.key.password=abcdefgh我使用以下命令将cert.crt文件转换为.pem:
openssl x509 -inform DER -in cert.crt -out cert.pem -text这给了我一个有效的pem,我可以用一个texteditor来读取它。然后,我从ssl.ca.location指向该pem文件,代理被配置为不验证客户端,但是当我启动客户端生成器时,我得到了以下错误日志:
Connected to ipv4#xx.xxx.xx.xx:9094
failed: err: Local: SSL error: (errno: No error)
Broker changed state CONNECT -> DOWN我试了我能想到的所有方法,但就是不能让它工作。因为它与我可以从kafka下载的脚本一起工作,所以我相信代理没有任何问题。
任何帮助都会得到重视。
发布于 2021-05-10 15:46:27
使用SSL证书通过Dotnet控制台应用程序安全地连接到Kafka
要安装的Nuget包(包管理器控制台)
Install-Package Confluent.Kafka
Install-Package Microsoft.Extensions.Configuration.Jsonappsettings.json
{
"ApplicationName": "DotNetConsoleClientForStrimziKafka",
"KafkaClientConfig": {
"bootstrap.servers": "<PublicIP_of_LoadBalancer>:9094",
"security.protocol": "SSL",
"ssl.ca.location": "C:\\kafkacerts\\ca.crt",
"ssl.certificate.location": "C:\\kafkacerts\\user.crt",
"ssl.key.location": "C:\\kafkacerts\\user.key"
}
}Program.cs
appsettingsConfig = new ConfigurationBuilder()
.SetBasePath(System.AppContext.BaseDirectory)
.AddJsonFile(DefaultSettingsJsonFile, false, true)
.Build();
var configProperties = appsettingsConfig.GetSection(configSectionName).GetChildren().ToDictionary(x => x.Key, x => x.Value);
var producerConfig = new ProducerConfig(configProperties);
using var producer = new ProducerBuilder<string, string>(producerConfig).Build();您需要下载已解码的证书并将其放入文件夹(在我的示例中为C:\kafkacerts)。
https://stackoverflow.com/questions/45984277
复制相似问题