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

Python客户端使用SASL_SSL连接Kafka需要将jks密钥转换为pem密钥,需要转化成p12格式再转换pem才能适配confluent_kafka包

证书生成

生成证书以及jks参考以下文章
https://blog.csdn.net/qq_41527073/article/details/121148600

证书转换jks -> pem

需要转化成p12以下转换才能适配confluent_kafka包,直接jks转pem会报错不能使用,具体参考以下文章
https://www.ngui.cc/zz/1104321.html?action=onClick
在这里插入图片描述
keytool -importkeystore -srckeystore server.truststore.jks -destkeystore server.p12 -deststoretype PKCS12
openssl pkcs12 -in server.p12 -nokeys -out server.cer.pem
keytool -importkeystore -srckeystore server.keystore.jks -destkeystore client.p12 -deststoretype PKCS12
openssl pkcs12 -in client.p12 -nokeys -out client.cer.pem
openssl pkcs12 -in client.p12 -nodes -nocerts -out client.key.pem
(转换过程)
生成证书目录结构:
在这里插入图片描述

python客户端示例代码

import rsa, json
import time, sys
from kafka import KafkaProducer
import confluent_kafka
import ssl
def encrypt(msg):with open('public.pem', 'rb') as publickfile:p = publickfile.read()pubkey = rsa.PublicKey.load_pkcs1(p)original_text = msg.encode('utf8')crypt_text = rsa.encrypt(original_text, pubkey)return crypt_textdef decrypt(data):with open('private.pem', 'rb') as privatefile:p = privatefile.read()privkey = rsa.PrivateKey.load_pkcs1(p)crypt_text = dataoriginal_text = rsa.decrypt(crypt_text, privkey)return original_text.decode('utf8')def produce_message():producer: KafkaProducer = Nonesuccess = 0conn_error = 0msg = {"type": "webclone","api": "delete","state": True,"nodename": "node-1","uuid": "asjdkjrh"}context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)context.set_ciphers('TLSv1:TLSv1.2')context.check_hostname = Falsecontext.verify_mode = ssl.CERT_NONEwhile success < 5:try:producer.send('message_push', value=json.dumps(msg))producer.flush()success += 1except KeyboardInterrupt:breakexcept:while True:try:producer = KafkaProducer(bootstrap_servers=['172.XX.X.XX:9093'],acks = 1,security_protocol="SASL_SSL",ssl_cafile="/Kafka/config/ssl/server.cer.pem",ssl_certfile="/Kafka/config/ssl/client.cer.pem",ssl_keyfile="/Kafka/config/ssl/client.key.pem",ssl_context=context,sasl_mechanism="PLAIN",sasl_plain_username="kafka",sasl_plain_password="XXXXX",api_version = (2, 0),)breakexcept Exception as e:producer = Noneprint(e)conn_error += 1time.sleep(1)print(f"connect error: {conn_error}")if __name__ == '__main__':if len(sys.argv) < 2:print("Usage: python3 test.py produce|consume")sys.exit(1)start_time = time.time()if sys.argv[1] == 'produce':produce_message()elif sys.argv[1] == 'consume':consume_message()end_time = time.time()print(f"start at: {start_time}, end at: {end_time}, cost: {end_time - start_time} seconds")

相关文章:

Python客户端使用SASL_SSL连接Kafka需要将jks密钥转换为pem密钥,需要转化成p12格式再转换pem才能适配confluent_kafka包

证书生成 生成证书以及jks参考以下文章 https://blog.csdn.net/qq_41527073/article/details/121148600 证书转换jks -> pem 需要转化成p12以下转换才能适配confluent_kafka包&#xff0c;直接jks转pem会报错不能使用&#xff0c;具体参考以下文章 https://www.ngui.cc/z…...

JDK8 ConcurrentHashMap源码分析

文章目录常量说明put() 方法putVal() 方法initTable()&#xff1a;初始化数组treeifyBin()&#xff1a;链表转红黑树tryPresize()&#xff1a;初始化数组扩容TreeBin() 构造方法&#xff1a;生成红黑树putTreeVal()&#xff1a;往红黑树中插入值helpTransfer()&#xff1a;多线…...

前置知识-初值问题、欧拉法、改进欧拉法

1.1 初值问题 初值问题是科研、工程技术应用中最常见的一类问题, 一阶常微分方程的初值问题表述如下: 已知 u ( x ) u(x) u(x) 的起始点 ( x 0 , u 0 ) \left(x_0, u_0\right)...

睡眠影响寿命,这几个睡眠习惯赶紧改掉!

我们知道&#xff0c;现在睡眠不足已经成为普遍问题&#xff0c;但你知道睡眠的时长会影响寿命吗&#xff1f;熬夜对身体不好&#xff0c;已是老生常谈。但睡得过早&#xff0c;也可能影响寿命&#xff01;2021年《睡眠医学》杂志一项针对21个国家11万名参与者的研究中发现&…...

Linux逻辑卷管理器(PV、VG、LV、PE)

目录 PV阶段 VG阶段 LV阶段 文件系统阶段 逆向操作&#xff08;删除LVM&#xff09; 逻辑卷管理器&#xff08;Logical Volume Manager&#xff09;&#xff0c;简称LVM LVM的做法是将几个物理的分区&#xff08;或磁盘&#xff09;通过软件组合成为一块看起来时独立的大…...

Centos7 内核升级

一、背景 在 CentOS 使用过程中&#xff0c;高版本的应用环境可能需要更高版本的内核才能支持&#xff0c;所以难免需要升级内核&#xff0c;所以下面将介绍yum和rpm两种升级内核方式。 关于内核种类: kernel-ml——kernel-ml 中的ml是英文【 mainline stable 】的缩写&…...

SpringBoot 启动配置文件加载和参数配置修改问题

SpringBoot 配置文件修正和参数覆盖SpringBoot 配置文件加载和参数覆盖1、SpringBoot 配置文件加载1.1、修改application.properties的参数几种方式1.2、方法一&#xff1a;直接CMD1.3、方法二&#xff1a;系统变量配置1.4、方法三&#xff1a;程序运行配置1.5、方法四&#xf…...

布隆过滤器和布谷鸟过滤器详解

今天和大家分享下布隆过滤器和布谷鸟过滤器 一.布隆过滤器 1.简单介绍 布隆过滤器是用于检索一个元素是否在一个集合中的算法&#xff0c;是一种用空间换时间的查询算法。 2.实现原理 布隆过滤器的存储结构是一个bitmap结构&#xff0c;初始值都是0&#xff0c;如下图所示&am…...

WebGIS前端框架(openlayers,mapbox,leaflet)图形图像底层渲染原理分析

学了这么多的框架,做了这么多的项目,你是否清楚你使用的GIS框架(mapbox,open layers,cesium,leaflet)底层到底是什么原理?是否清楚哪些所谓的地图影像,矢量图形,图标,图像动画等是如何渲染到网页上的?这篇文章就大家解读一下WebGIS的底层原理。 首先说说历史,有时…...

AcWing语法基础课笔记 第五章 C++中的字符串

第五章 C中的字符串 字符串是计算机与人类沟通的重要手段。 ——闫学灿 字符与整数的联系——ASCII码 每个常用字符都对应一个-128~127的数字&#xff0c;二者之间可以相互转化&#xff1a; 常用ASCII值&#xff1a;’A’-‘Z’ 是65~90&#xff0c;’a’-‘z’…...

抓包工具Charles(一)-下载安装与设置

无论是在测试、开发工作中&#xff0c;抓包都是很重要、很常用的技能。Charles作为一款抓包工具&#xff0c;能够满足大部分的工作需求。 文章目录一、下载地址二、安装三、安装根证书&#xff08;电脑&#xff09;四、设置五、抓包附录&#xff1a;[零基础入门接口功能测试教程…...

SpringBoot09:Swagger

什么是Swagger&#xff1f; ①是一个API框架 ②可以在线自动生成 RestFul 风格的API文档&#xff0c;实现API文档和API定义同步更新 ③可以直接运行、在线测试 API 接口 ④支持多种语言&#xff08;Java、PHP等&#xff09; 官网&#xff1a;API Documentation & Desi…...

Git 常用命令

笔记-git命令1、名词2、基本操作3、分支操作1、名词 master: 默认开发分支origin: 默认远程版本库Index / Stage: 暂存区Workspace: 工作区Repository: 仓库区 &#xff08;或本地仓库&#xff09;Remote: 远程仓库 2、基本操作 配置级别 -local (默认&#xff0c;高级优先…...

查看jdk安装路径,在windows上实现多个java jdk的共存解决办法,安装java19后终端乱码的解决

查看jdk安装路径&#xff0c; 在windows上实现多个java jdk的共存解决办法&#xff0c; 安装java19后终端乱码的解决 目录 一、查看jdk&#xff08;java开发工具包&#xff09;安装路径的方法 二、在windows上实现多个java jdk的共存 &#xff08;1&#xff09;、安装好多…...

链表数据结构

用途&#xff1a; 链表是一种用于计算机中存储与组织数据的结构&#xff0c;链表将数据以节点的形式串联起来&#xff0c;其存储的容量大小可以动态伸缩。 结构&#xff1a; typedef struct {int data; /*当前节点的数据*/node *next;/*下一个节点的指针*/node *last;/*上一个…...

汽车DTC故障内码与标准故障码的解析与转换

目录 一、故障内码与标准故障码的解析 &#xff08;1&#xff09;故障内码的信息格式与解析 &#xff08;2&#xff09;故障内码中DTC状态的解析 &#xff08;3&#xff09;故障内码与标准故障码之间的对应关系 二、故障内码与标准故障码的转换代码 一、故障内码与标准故障…...

零基础学习测试还是开发?

软件测试作为IT行业的刚需职位&#xff0c;其实是非常适合0基础的小白同学加入学习的但是具体选择测试还是开发还是要看你个人的兴趣爱好以及学习能力&#xff0c;对哪个感兴趣&#xff0c;哪个能学的会就选择哪个就可以了 平时说起程序员印象中大都是做Java、做前端、做后端&…...

如何加入new bing候补名单

如何加入new bing候补名单 我们都知道现在最新版edges中已经提示我们可以加入new bing候补名单&#xff0c;但国内环境下无法正常加入new bing候补名单&#xff0c;这篇文章讲告诉你如何绕过限制加入new bing候补名单 下载配置 HeaderEditor 插件 下载地址microsoftedge.mic…...

中国天气——西风带环流和寒潮

中国天气——西风带环流和寒潮 一. 西风环流概述 1. 概念 西风带&#xff1a;中高纬度地区平均水平环流在对流层盛行西风&#xff0c;称之为西风带西风带波动&#xff1a;西风带围绕极涡沿纬圈运动&#xff0c;平均而言表现为冬季三槽三脊&#xff0c;夏季四槽四脊&#xff…...

2022黑马Redis跟学笔记.实战篇(四)

2022黑马Redis跟学笔记.实战篇 四4.3.秒杀优惠券功能4.3.1.秒杀优惠券的基本实现一、优惠卷秒杀1.1 全局唯一ID1.2 Redis实现全局唯一Id1.3 添加优惠卷1.4 实现秒杀下单4.3.2.超卖问题4.3.3.基于乐观锁解决超卖问题1. 悲观锁2. 乐观锁3. 乐观锁解决超卖问题4.4 秒杀的一人一单限…...

Allegro中如何删除多余D码操作指导

Allegro中如何删除多余D码操作指导 用Allegro做PCB设计的时候,在最后输出生产文件的时候,必须清除多余的D码,不让多余的D码出现在D码文件中,类似下图 如何清除多余D码,具体操作如下 点击Tools点击Padstack...

学生投票系统-课后程序(JAVA基础案例教程-黑马程序员编著-第三章-课后作业)

【案例3-4】学生投票系统 记得 关注&#xff0c;收藏&#xff0c;评论哦&#xff0c;作者将持续更新。。。。 【案例介绍】 案例描述 某班级投票竞选班干部&#xff0c;班级学生人数为100人&#xff0c;每个学生只能投一票。 本任务要求&#xff0c;编程实现一个投票程序&…...

初始化一个列表python

1.初始化递增的list&#xff1a; list1 list(range(10)) #print list1 #[0,1,2,...,9] 2.初始化每项为0的一维数组&#xff1a; list2 [0] * 5 #print list2 #[0,0,0,0,0] 3.初始化固定值的一维数组&#xff1a; initVal 1 listLen 5 list3 [ initVal for i in range(5)] …...

【electron】webview嵌入页面发送消息给父级页面

场景需求&#xff1a; 嵌入页面操作时&#xff0c;通知父级页面 涉及知识点&#xff1a; contextBridge 嵌入页面可使用暴露的对象ipc-message 监听嵌入页面发送的消息webview preload 嵌入页面运行加载的脚本 问题&#xff08;两种方式&#xff09; 使用监听ipc-message需…...

Whids:一款针对Windows操作系统的开源EDR

关于Whids Whids是一款针对Windows操作系统的开源EDR&#xff0c;该工具所实现的检测引擎基于先前的 Gene项目构建&#xff0c;并专门设计可以根据用户定义的规则匹配Windows事件。 功能特性 1、为社区提供一款功能强大且开源的Windows EDR&#xff1b; 2、支持检测规则透明化…...

初级调色转档CameraRaw

一级调色 还原-曝光-色彩-细节-质感 修图的范围 整体&#xff08;掌握基本面板&#xff09;——局部&#xff08;曲线&#xff09;——具象&#xff08;混色器&#xff09; 修片最开始的准备工作 看直方图:明暗跟色彩的数据表 分析图片是否存在以下问题&#xff1a; 1.曝光…...

Mybatis源码(3) - Executor执行过程 | 一级缓存 | 二级缓存

0. 前言&#xff1a;1. CachingExecutor#query&#xff1a;1.1. BoundSql&#xff1a;1.2. CacheKey&#xff1a;1.3. 二级缓存&#xff1a;1.4. 一级缓存&#xff1a;2. JDBC过程执行&#xff1a;3. 结果集处理&#xff1a;4. Mybatis的一级缓存、二级缓存区别&#xff1a;0. …...

成为 Seatunnel 源码贡献者保姆级教程

Apache SeaTunnel 是下一代高性能、分布式、海量数据集成平台&#xff0c;已经在 B 站、腾讯云等 100 家公司生产使用。目前处于 incubator 阶段。作为公司内部使用的 ETL 工具&#xff0c;Seatunnel 可以基于已有的 Spark、Flink 计算平台进行数据交换也可以运行在 k8s 平台上…...

MySQL的索引视图练习题

学生表&#xff1a;Student (Sno, Sname, Ssex , Sage, Sdept) 学号&#xff0c;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;所在系 Sno为主键 课程表&#xff1a;Course (Cno, Cname,) 课程号&#xff0c;课程名 Cno为主键 学生选课表&#xff1a;SC (Sno, Cno, Score)…...

【C++ Primer Plus】第四章:复合类型

文章目录4.1 数组C11数组初始化的方法4.2 字符串**cin是如何确定已完成字符串输入呢&#xff1f;****如何每次读取一行字符串输入&#xff1f;****面向行的输入&#xff1a;getline()****面向行的输入&#xff1a;get( )****为什么推荐使用get( )&#xff0c;而不是getline( )呢…...

设计制作合同交印花税吗/十大seo免费软件

一份重要的word文挡因损坏而无法打开&#xff0c;将导致很严重的后果。遇到这样的情况&#xff0c;可以通过下面的方法来修复word文挡。 方法一&#xff1a;利用word2002/2003的“打开并修复”功能来修复文挡。(1)启动word2002/2003&#xff0c;单击“文件-----打开”&#…...

简单的视频网站能不能用dw做/谷歌google官网

我觉得docker最大的便利性体现在可以实现镜像共享&#xff0c;方便团队在同一环境下开发。当然docker的强大之处不止于此。 接下来我用一个例子来演示如何进行docker镜像共享&#xff0c;步骤如下&#xff08;Ubuntu&#xff09;&#xff1a; 准备工作&#xff1a;首先确定已经…...

重庆市建设监理协会网站/网络优化网站

在Java的泛型出现之前&#xff0c;只有数组可以用来存储指定类型的对象&#xff1b;在自动装箱机制出现之前&#xff0c;只有数组可以用来存储基本数据类型&#xff1b;也就是说&#xff0c;在泛型和自动装箱机制出现之前&#xff0c;数组在Java当中的分量举足轻重。 况且数组还…...

seo如何优化排名/windows优化大师使用方法

UILabel 能显示文字&#xff0c;不能直接通过addTarget...方法监听点击1. 常见属性 property(nonatomic,copy) NSString *text; 显示文字property(nonatomic,retain) UIFont *font; 显示字体 default is nil (system font 17 plain)property(nonatomic,retain) UIColor *textC…...

做初中物理题目的网站/查看关键词被搜索排名的软件

作者&#xff1a;ZStack社区 秦伟 一、前言 今天我们来了解一下ZStack的裸金属&#xff0c;提到裸金属服务&#xff0c;很多人从字面上可能对其不是很了解&#xff0c;其实早在之前的私有云OpenStack平台&#xff0c;就已经推行了Ironic裸金属服务&#xff0c;而且在去年的最…...

做网站空间百度云和阿里云区别/抖来查关键词搜索排名

文章目录行万里路--时序约束实战篇1. 梳理时钟树2. 约束主时钟3. 约束衍生时钟4. 延迟约束5. 伪路径约束6. 多周期路径约束本文摘抄自&#xff1a;个人网站&#xff1a;http://www.technomania.cn/微信公众号&#xff1a;Quant_times、Reading_Times行万里路–时序约束实战篇 …...