首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL confluent-kafka-dotnet librdkafka kafka SSL

SSL confluent-kafka-dotnet librdkafka kafka SSL
EN

Stack Overflow用户
提问于 2017-08-31 22:44:57
回答 1查看 4K关注 0票数 1

我在让confluent-kafka-dotnet库与SSL一起工作时遇到了问题。使用SSL一切都很好,我可以通过使用kafkas自己的scritps让SSL工作,如下所示。

代码语言:javascript
复制
> .\kafka-console-producer.bat --broker-list domain.net:9094 --topic
busit-test --producer.config client-ssl.properties

client-ssl.properties内容:

代码语言:javascript
复制
security.protocol=SSL
ssl.truststore.location=C:/Certificates/store.jks
ssl.truststore.password=mysecret

我在cert.crt文件中获得了ca,这就是我如何通过使用以下命令获得store.jks的:

代码语言:javascript
复制
keytool -importcert -keystore store.jks -alias issuing -file cert.crt

要使用confluent-kafka-dotnet,我需要根据文档( https://github.com/edenhill/librdkafka/wiki/Using-SSL-with-librdkafka )对其进行配置。

代码语言:javascript
复制
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:

代码语言:javascript
复制
openssl x509 -inform DER -in cert.crt -out cert.pem -text

这给了我一个有效的pem,我可以用一个texteditor来读取它。然后,我从ssl.ca.location指向该pem文件,代理被配置为不验证客户端,但是当我启动客户端生成器时,我得到了以下错误日志:

代码语言:javascript
复制
Connected to ipv4#xx.xxx.xx.xx:9094
failed: err: Local: SSL error: (errno: No error)
Broker changed state CONNECT -> DOWN

我试了我能想到的所有方法,但就是不能让它工作。因为它与我可以从kafka下载的脚本一起工作,所以我相信代理没有任何问题。

任何帮助都会得到重视。

EN

回答 1

Stack Overflow用户

发布于 2021-05-10 15:46:27

使用SSL证书通过Dotnet控制台应用程序安全地连接到Kafka

要安装的Nuget包(包管理器控制台)

代码语言:javascript
复制
Install-Package Confluent.Kafka
Install-Package Microsoft.Extensions.Configuration.Json

appsettings.json

代码语言:javascript
复制
{
  "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

代码语言:javascript
复制
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)。

查看详情:Using SSL Certificates For Kafka Dotnet Client

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45984277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档