连接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
相关推荐
宇之广曜3 小时前
从 MQ 到 Celery:把异步任务、状态表、重试补偿和 Outbox 一次讲清楚
kafka·rabbitmq
苍煜4 小时前
Kafka消息零丢失核心全解:生产者acks机制+消费者offset机制
分布式·kafka
敖正炀9 小时前
Kafka 安全机制:SASL 认证、SSL 加密与 ACL 授权
kafka
敖正炀11 小时前
Kafka 特性全景与选型指南
kafka
乐之者v16 小时前
Kafka 跨服数据同步
分布式·kafka
富士康质检员张全蛋17 小时前
Kafka 消息查找流程和消息读取流程
分布式·kafka
深蓝轨迹19 小时前
Kafka入门教程--帮你理清所有概念和细节
分布式·zookeeper·kafka
小尘要自信19 小时前
Kafka 从原理到实践:分区副本机制、生产消费可靠性、以及如何避开那些年踩过的坑
分布式·kafka
醉颜凉1 天前
超详细图解:HTTPS 中的 SSL/TLS 完整握手过程(面试必背)
面试·https·ssl
苍煜2 天前
Kafka vs RocketMQ 生产环境选型指南
分布式·kafka·rocketmq