连接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
相关推荐
HAPPY酷2 小时前
Kafka 和Redis 在系统架构中的位置
redis·kafka·系统架构
忆雾屿3 小时前
云原生时代 Kafka 深度实践:06原理剖析与源码解读
java·后端·云原生·kafka
TCChzp5 小时前
Kafka入门-消费者
分布式·kafka
itachi-uchiha5 小时前
命令行以TLS/SSL显式加密方式访问FTP服务器
服务器·网络协议·ssl
moppol7 小时前
SSL/TLS握手全流程拆解:从“Hello“到“安全通道“的每一个字节
网络·安全·ssl
itachi-uchiha10 小时前
使用vsftpd搭建FTP服务器(TLS/SSL显式加密)
运维·服务器·ssl
Dnui_King11 小时前
Kafka 入门指南与一键部署
分布式·kafka
TCChzp13 小时前
Kafka入门-生产者
分布式·kafka
计算机毕设定制辅导-无忧学长14 小时前
Kafka 快速上手:安装部署与 HelloWorld 实践(二)
分布式·kafka
计算机毕设定制辅导-无忧学长1 天前
Kafka 核心架构与消息模型深度解析(二)
架构·kafka·linq