连接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 小时前
apisix的kafka-logger设置日志格式log_format,不支持单个路由设置
分布式·kafka
2501_9411444210 小时前
Java、C# 与 C++:编程语言的选择与应用场景分析
kafka
S***y39612 小时前
算法挑战算法的广泛应用,它们也带来了一系列挑战,这些挑战不仅关乎技术层面,更涉及伦理、法律和社会等多个维度。
kafka·pyqt·宽度优先
Deamon Tree12 小时前
kafka延迟队列是怎么实现的
数据库·kafka·linq
Violet_YSWY14 小时前
Kafka KRaft 模式(无 ZooKeeper)是啥
分布式·zookeeper·kafka
戮戮1 天前
从 Spring @Retryable 到 Kafka 原生重试:消息重试方案的演进与最佳实践
spring·kafka·linq
Q***f6351 天前
后端消息队列学习资源,RabbitMQ+Kafka
学习·kafka·rabbitmq
Bohemian—Rhapsody1 天前
kafka主题(topic)数据保留时间设置
分布式·kafka
hongweihao1 天前
Kafka 消息积压了,同事跑路了
后端·spring cloud·kafka
Violet_YSWY1 天前
bitnami/kafka环境变量讲解
分布式·kafka