连接ssl加密的kafka集群

1 kafka传输层(TLS)加密

传输层加密用于保护在Kafka集群内以及Kafka客户端与服务器之间传输的数据。Kafka通过SSL/TLS(安全套接层/传输层安全)协议来实现传输层加密。

2 获取client证书

这里我们的kafka集群已经加密,所以我们直接获取用于加密的cert证书,k8s中证书一般都是存放在secret里,

bash 复制代码
kubectl get secret kafka-tls-secret -o=jsonpath='{.data.certificate\.crt}' -n kafka | base64 --decode > client.crt

3 连接集群

3.1 使用PEM格式证书

有了证书,我们就可以开始连接kafka集群了,配置ssl-config.properties如下,

bash 复制代码
$ cat ssl-config.properties
security.protocol=SSL

ssl.truststore.location=/kafka/client.crt

ssl.truststore.type=PEM

其中,ssl.truststore.location替换成对应证书的路径。

连接kafka集群时,指定使用该配置文件,

bash 复制代码
$ kafka-topics --bootstrap-server kafka-bootstrap:9093 --command-config ssl-config.properties --list
__consumer_offsets
...

使用PEM格式证书有个问题,证书是明文的,没有加密,如果要加密证书可以使用JKS格式或者PKCS12格式。

3.2 使用JKS格式证书

我们需要使用keytool工具将cet证书转成JKS证书,

bash 复制代码
keytool -keystore truststore.jks -storepass keystore_password -noprompt -import -file client.crt -trustcacerts -storetype JKS

其中,

keystore,指定jks证书名字

storepass,指定加密证书的密码

file,指定导入的crt证书名字

storetype,指定最终生成证书格式

导入后可以查看确认下信息,

bash 复制代码
$ keytool -list -keystore truststore.jks -storepass keystore_password
Keystore type: JKS
Keystore provider: SUN

Your keystore contains 1 entry

mykey, Jun 5, 2024, trustedCertEntry,
Certificate fingerprint (SHA-256): AE:C3...

连接kafka集群时,ssl-config.properties设置如下,需要添加密码设置,ssl.truststore.password

bash 复制代码
$ cat ssl-config.properties
security.protocol=SSL

ssl.truststore.location=/kafka/truststore.jks

ssl.truststore.password=keystore_password

ssl.truststore.type=JKS

3.3 使用PKCS12格式证书

storetype设置为PKCS12即可,

bash 复制代码
keytool -keystore truststore.p12 -storepass keystore_password -noprompt -import -file client.crt -storetype PKCS12

同样ssl-config.properties里的格式也需要修改

bash 复制代码
$ cat ssl-config
security.protocol=SSL

ssl.truststore.location=/kafka/truststore.p12

ssl.truststore.password=keystore_password

ssl.truststore.type=PKCS12

参考文档:

  1. https://strimzi.io/docs/0.14.0/full#configuring-internal-clients-to-trust-cluster-ca-str
相关推荐
鼠鼠我捏,要死了捏9 分钟前
Kafka Streams vs Apache Flink vs Apache Storm: 实时流处理方案对比与选型建议
kafka·apache flink·apache storm
Tapdata 钛铂数据2 小时前
TapData vs Kafka ETL Pipeline:竞争?共存?——企业实时数据策略的正确打开方式
kafka·数据同步·实时数据·kafka connect
ffyyhh99551118 小时前
kafka生产者 消费者工作原理
kafka
香吧香20 小时前
kafka 副本集设置和理解
kafka
Rookie小强1 天前
kafka的rebalance机制是什么
分布式·kafka
码农小灰2 天前
Kafka消息持久化机制全解析:存储原理与实战场景
java·分布式·kafka
Raisy_2 天前
05 ODS层(Operation Data Store)
大数据·数据仓库·kafka·flume
纪莫2 天前
Kafka如何保证「消息不丢失」,「顺序传输」,「不重复消费」,以及为什么会发生重平衡(reblanace)
java·分布式·后端·中间件·kafka·队列
poemyang2 天前
千亿消息“过眼云烟”?Kafka把硬盘当内存用的性能魔法,全靠这一手!
kafka·高并发·pagecache·存储架构·顺序i/o·局部性原理
武子康2 天前
大数据-75 Kafka 高水位线 HW 与日志末端 LEO 全面解析:副本同步与消费一致性核心
大数据·后端·kafka