当前位置: 首页 > news >正文

kafka开启SSL认证(包括内置zookeeper开启SSL)

zookeeper和kafka的SSL开启都可单独进行

生成SSL证书

使用jre自带的keytool工具生成,linux和windows下生成的证书可以通用

  1. 生成含有一个私钥的keystore文件,有效期10年(本文证书密码统一使用test123)
    keytool -genkeypair -alias certificatekey -dname “CN=127.0.0.1, OU=127.0.0.1, O=127.0.0.1, L=SH, ST=SH, C=CN” -keyalg RSA -validity 3650 -keystore keystore.jks
  2. 查看生成的keystore文件
    keytool -list -v -keystore keystore.jks
  3. 导出证书
    keytool -export -alias certificatekey -keystore keystore.jks -rfc -file selfsignedcert.cer
  4. 导入证书到truststore文件中
    keytool -import -alias certificatekey -file selfsignedcert.cer -keystore truststore.jks
  5. 查看生成的truststore文件
    keytool -list -v -keystore truststore.jks

zookeeper开启SSL

受版本影响,需要3.5及以上版本才能正常开启,(可查看 libs/zookeeper-xxx.jar确认版本号)

  1. 将生成的证书文件统一放在kafka安装路径ssl文件夹(需要新建)
  2. 编辑config/zookeeper.properties配置文件,添加下列配置
#开启SSL
#ssl端口
secureClientPort=3183
#开启ssl使用的本机访问地址
secureClientPortAddress=127.0.0.1
serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory
ssl.keyStore.location=/home/app/kafka/ssl/keystore.jks
ssl.keyStore.password=test123
ssl.trustStore.location=/home/app/kafka/ssl/truststore.jks
ssl.trustStore.password=test123

若注释掉原本的 clientPort配置则可以屏蔽非SSL的访问地址

  1. Kafka配置zookeeper ssl连接
    编辑 config/server.properties, 开启SSL并配置上证书和证书库路径以及相应密码,配置如下:
zookeeper.connection.timeout.ms=18000
zookeeper.connect=127.0.0.1:3183
zookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
zookeeper.ssl.client.enable=true
zookeeper.client.secure=true
zookeeper.ssl.hostnameVerification=false
zookeeper.ssl.keystore.location=/home/app/kafka/ssl/keystore.jks
zookeeper.ssl.keystore.password=test123
zookeeper.ssl.truststore.location=/home/app/kafka/ssl/truststore.jks
zookeeper.ssl.truststore.password=test123

kafka开启SSL

修改kafka安装路径下 config/server.properties文件,将kafka连接协议改为SSL,并配置上证书和证书库路径以及相应密码,如下:

#IP地址使用实际kafka服务器IP地址(需自己更换下面的ip)
listeners =SSL://192.168.6.6:9093
#server.keystore.jks的地址
ssl.keystore.location=/home/app/kafka/ssl/keystore.jks
ssl.keystore.password=test123
ssl.truststore.location=/home/app/kafka/ssl/truststore.jks
ssl.truststore.password=test123
ssl.client.auth=required
ssl.enabled.protocols=TLSv1.2
ssl.keystore.type=JKS
ssl.truststore.type=JKS
#关闭主机名
ssl.endpoint.identification.algorithm=
#设置内部访问也用SSL,默认值为security.inter.broker.protocol=PLAINTEXT
security.inter.broker.protocol=SSL

测试

启动zookeeper服务:

bin/zookeeper-server-start.sh config/zookeeper.properties

启动kafka服务:

bin/kafka-server-start.sh config/server.properties

创建客户端连接配置文件 client-ssl.properties

security.protocol=SSL
ssl.enabled.protocols=TLSv1.2
ssl.truststore.location=/home/app/kafka/ssl/truststore.jks
ssl.truststore.password=test123
ssl.keystore.location=/home/app/kafka/ssl/keystore.jks
ssl.keystore.password=test123
ssl.key.password=test123
ssl.endpoint.identification.algorithm=

创建带证书校验的生产者

bin/kafka-console-producer.sh --broker-list 192.168.6.6:9093 --topic test --producer.config client-ssl.properties

另起窗口创建带证书校验的消费者

bin/kafka-console-consumer.sh --broker-list 192.168.6.6:9093 --topic test --consumer.config client-ssl.properties

尝试在生产者窗口中输入任意字符回车,若消费者窗口能正常接收则表示kafka运行正常

http://www.lryc.cn/news/223351.html

相关文章:

  • Powerpoint不小心被覆盖?PPT误删文件如何恢复?
  • 美团产品经理面试题大解密:流量VS口碑,如何找到最佳平衡点?
  • docker部署tomcat
  • 大语言模型(LLM)综述(七):大语言模型设计应用与未来方向
  • 牛客网:链表分割
  • pytorch(小土堆)深度学习
  • 统计 boy girl 复制出来多少次。 浴谷 P1321题
  • odoo16前端框架分析1 boot.js
  • 酷开科技持续推动智能投影行业创新发展
  • TIA博途中已经被调用的变量,为什么交叉引用时却没有显示调用信息?
  • OSPF下的MGRE实验
  • 论文速览 | TRS 2023: 使用合成微多普勒频谱进行城市鸟类和无人机分类
  • 《网络协议》02. 物理层 · 数据链路层 · 网络层
  • 【chatgpt问答记录】双端队列、栈和函数调用栈
  • 另辟蹊径者 PoseiSwap:背靠潜力叙事,构建 DeFi 理想国
  • 如何查看笔记本电脑电池损耗
  • 一键批量视频剪辑、合并,省时省力,制作专业视频
  • 使用R语言构建HTTP爬虫:IP管理与策略
  • Stable Diffusion源码调试(二)
  • 网络安全(黑客)-零基础自学
  • 在线CRM系统的安全性高吗?企业该如何选择?
  • R-install_miniconda()卸载 | conda命令行报错及解决方法
  • leaflet:利用Leaflet-Geoman绘制多种图形,导出为geojson文件(135)
  • 【C语言基础】第02章_变量与进制
  • 【案例教程】基于AERMOD模型在大气环境影响评价中的实践技术应用
  • 【C语言从入门到放弃 4】字符串,结构体,共用体,位域,typedef详解
  • Linux学习第34天:Linux LCD 驱动实验(一):星星之火可以燎原
  • Flink SQL Window TopN 详解
  • leetcode做题笔记216. 组合总和 III
  • Redis系列-Redis数据类型【3】