kafka配置ssl加密

本文档介绍了如何在Kafka中配置SSL加密,包括证书的重新生成过程,如为每个broker生成SSL密钥和证书,创建CA证书,签名证书,以及更新Kafka server和客户端的配置。此外,还提到了证书过期问题以及服务重启步骤。

1.背景:

之前的证书过期了,kafka的服务日志一直报

Failed authentication with /ip (SSL handshake failed)

生产者报的错误

PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed

2.重新生成

一) 生成认证文件

1) 为每个Kafka broker生成SSL密钥和证书。

keytool -keystore server.keystore.jks -alias localhost -validity 365 -genkey

在这里插入图片描述

解释:

  1. keystore: 密钥仓库存储证书文件。密钥仓库文件包含证书的私钥(保证私钥的安全)。
  2. validity: 证书的有效时间,天

2) (执行完第1步后爆出警告)执行以下命令

keytool -importkeystore -srckeystore server.keystore.jks -destkeystore server.keystore.jks -deststoretype pkcs12

### 配置C# Kafka客户端使用SSL连接 在C#中为Kafka客户端配置SSL连接,主要依赖于 `Confluent.Kafka` 库提供的配置选项。通过设置适当的 SSL/TLS 参数,可以实现与启用了加密通信的 Kafka Broker 的安全连接。 #### SSL配置参数 为了启用SSL连接,需要在客户端配置中指定以下关键参数: - **SecurityProtocol**:设置为 `SecurityProtocol.Ssl` 或 `SecurityProtocol.SaslSsl`(如果同时启用了 SASL 认证)。 - **SslCaLocation**:指定信任的CA证书路径,用于验证Broker的身份。 - **SslCertificateLocation** 和 **SslKeyLocation**:用于客户端双向认证(mTLS),即Broker也要求客户端提供证书。 - **SslKeyPassword**:如果私钥文件被加密保护,则需要提供密码[^1]。 #### 示例代码 以下是一个完整的C#示例,展示如何配置Kafka Producer 使用 SSL 加密连接到 Broker: ```csharp using Confluent.Kafka; class Program { static void Main() { var config = new ProducerConfig { BootstrapServers = "kafka-broker1:9093", SecurityProtocol = SecurityProtocol.Ssl, SslCaLocation = "/path/to/ca.crt", SslCertificateLocation = "/path/to/client.crt", SslKeyLocation = "/path/to/client.key", // 如果私钥有密码保护 // SslKeyPassword = "your-key-password" }; using (var producer = new ProducerBuilder<Null, string>(config).Build()) { try { var result = producer.ProduceAsync("secure-topic", new Message<Null, string> { Value = "Secure message" }).Result; Console.WriteLine($"Message delivered to {result.TopicPartitionOffset}"); } catch (ProduceException<Null, string> ex) { Console.WriteLine($"Delivery failed: {ex.Message} [{ex.Code}]"); } } } } ``` 该配置适用于启用了单向或双向SSL认证的Kafka集群。若仅需验证Broker身份而无需客户端证书,可省略 `SslCertificateLocation` 和 `SslKeyLocation` 设置,并将 `SecurityProtocol` 设为 `SslPlaintext`。 #### 注意事项 - 确保操作系统信任链中包含 Kafka Broker 使用的 SSL 证书,或者通过 `SslCaLocation` 指定 CA 证书路径。 - 若使用自签名证书,务必确认其已添加至受信任根证书存储或通过配置文件显式引用。 - 在生产环境中建议启用双向认证(mTLS),以增强安全性。 - .NET 运行时必须支持 TLS 1.2 及以上版本,否则可能无法建立安全连接。 ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值