连接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
相关推荐
JaneJiazhao9 分钟前
HTTPSOK:SSL/TLS证书自动续期工具
服务器·网络协议·ssl
JaneJiazhao10 分钟前
HTTPSOK:智能SSL证书管理的新选择
网络·网络协议·ssl
Mephisto.java3 小时前
【大数据学习 | kafka高级部分】kafka的kraft集群
大数据·sql·oracle·kafka·json·hbase
Mephisto.java3 小时前
【大数据学习 | kafka高级部分】kafka的文件存储原理
大数据·sql·oracle·kafka·json
yx9o4 小时前
Kafka 源码 KRaft 模式本地运行
分布式·kafka
java1234_小锋11 小时前
讲讲RabbitMQ 性能优化
kafka
码农爱java18 小时前
Kafka 之消息并发消费
spring boot·微服务·kafka·mq·消息中间件·并发消费
Mephisto.java1 天前
【大数据学习 | kafka高级部分】kafka的快速读写
大数据·redis·sql·kafka·flume
Mephisto.java1 天前
【大数据学习 | kafka高级部分】文件清除原理
大数据·hadoop·zookeeper·spark·kafka·hbase·flume
0_1_bits1 天前
【系统设计】高效的分布式系统:使用 Spring Boot 和 Kafka 实现 Saga 模式
spring boot·后端·云原生·架构·kafka·linq