python3发送需要双向认证的wss请求
1 # encoding = utf-8
2 import asyncio
3 import pathlib
4 import ssl
5 import websockets
6 import base64
7 from pb import conn_ready_pb2
8 import uuid
9 import datetime,time
10 import json
11 from google.protobuf import json_format
12 # 服务端声明CLIENT_AUTH
13 ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
14 #Purpose.CLIENT_AUTH该值表示该上下文可用于对Web客户端进行身份验证(因此,它将用于创建服务器端套接字),carfile服务端证书
15 ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH,cafile="D://my_project//Ajcloud//ca.crt")
16 # certfile和keyfile参数为指定包含证书被用来识别连接的本地端可选的文件,客户端证书
17 ssl_context.load_cert_chain(certfile="D://my_project//Ajcloud//mgr.crt", keyfile="D://my_project//Ajcloud//mgr.key")
18 ssl_context.verify_mode = ssl.CERT_REQUIRED
19
20 async def hello():
21 uri = "wss://xxxxxxxxxx"
22 async with websockets.connect(
23 uri, ssl=ssl_context
24 ) as websocket:
25 message = "xxxxx"
26 reg = conn_ready_pb2.ConnReadyRequest()
27 res = conn_ready_pb2.ConnReadyResponse()
28 reg.header.message_id = str(uuid.uuid1())
29 datetime_now = datetime.datetime.now()
30 date_stamp = str(int(time.mktime(datetime_now.timetuple())))
31 data_microsecond = str("%06d" % datetime_now.microsecond)[0:3]
32 date_stamp = date_stamp + data_microsecond
33 reg.header.message_ts = date_stamp
34 r = reg.SerializeToString()#序列化
35 b = base64.b64encode(r) # 将二进制转为base64编码
36 b2 = str(b, 'utf-8')
37 message = {"xxx": "xxx", "yyyy": b2}
38 await websocket.send(json.dumps(message))
39 print(f"> {message}")
40 greeting = await websocket.recv()
41 payload = json.loads(greeting)["payload"]
42 # base64转码成二进制
43 payload =base64.b64decode(payload)
44 res.ParseFromString(payload)#反序列化
45 json_result = json_format.MessageToJson(res) # pb转成json格式
46 print(json_result)
47 print(f"< {greeting}")
48
49
50 asyncio.get_event_loop().run_until_complete(hello())
python3发送需要双向认证的wss请求的更多相关文章
- ASIHTTPRequest实现https双向认证请求
什么是双向认证呢?简而言之,就是服务器端对请求它的客户端要进行身份验证,客户端对自己所请求的服务器也会做身份验证.服务端一旦验证到请求自己的客户端为不可信任的,服务端就拒绝继续通信.客户端如果发现服务 ...
- HTTPS 双向认证构建移动设备安全体系
HTTPS 双向认证构建移动设备安全体系 对于一些高安全性要求的企业内项目,我们有时希望能够对客户端进行验证.这个时候我们可以使用Https的双向认证机制来实现这个功能. 单向认证:保证server是 ...
- ssl双向认证和单向认证原理
有朋友在搞一个项目,周末有聊到一些安全性的东西,很自然会想起https,但https究竟如何实施,其原理又是什么? 基于ssl,一般的应用都是单向认证,如果应用场景要求对客户来源做验证也可以实现成双向 ...
- m.Tomcat使用openssl走APR通道配置单向和双向认证
引用自: http://blog.csdn.net/gtuu0123/article/details/5827800(Tomcat的SSL单向认证) http://blog.csdn.net/gtu ...
- 基于SSL协议的双向认证 - 双向认证 [3]
1 SSL双向认证的实现 这里是基于SSL和Tomcat配置实现的,配置方法如下: 1.1 生成CA数字证书 首先需要配置OPENSSL环境变量. 我的OPENSSL配置文件路径是“D ...
- 基于SSL协议的双向认证 - SSL协议 [1]
1 概要说明 在互联网通信方式中,目前用的最广泛的是HTTPS配合SSL和数字证书来保证传输和认证安全了. 2 详细介绍 2.1 HTTPS HTTPS全称:Hypertext Transf ...
- 基于openssl的单向和双向认证
1.前言 最近工作涉及到https,需要修改nginx的openssl模块,引入keyless方案.关于keyless可以参考CloudFlare的官方博客: https://blog.cloudfl ...
- tomcat------https单向认证和双向认证
一.https分为单向认证和双向认证: 单向认证就是说,只有客户端使用ssl时对服务器端的证书进行认证,也就是说,客户端在请求建立之前,服务器端会向客户端发送一个证书,一般情况下,这种证书都是由自己 ...
- nginx配置ssl加密(单双向认证、部分https)
nginx配置ssl加密(单双向认证.部分https) nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始 ...
- HTTPS 中双向认证SSL 协议的具体过程
HTTPS 中双向认证SSL 协议的具体过程: 这里总结为详细的步骤: ① 浏览器发送一个连接请求给安全服务器.② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器.③ 客户浏览器检查服务器送 ...
随机推荐
- [转帖]使用 Logical Import Mode
https://docs.pingcap.com/zh/tidb/v6.5/tidb-lightning-logical-import-mode-usage 配置及使用 可以通过以下配置文件使用 Lo ...
- [转帖]部署Alertmanager
https://flashcat.cloud/docs/content/flashcat-monitor/prometheus/alert/manager-install/ Alertmanager和 ...
- [转帖]浅谈RAID写惩罚(Write Penalty)与IOPS计算
https://www.dell.com/community/%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E5%92%8C%E4%BF%9D%E6%8A%A4-%E8%B ...
- [转帖]读懂什么是RDMA
https://blog.csdn.net/tony_vip?type=blog 一.什么是RDMA1.RDMA主要体现 2.如何理解RDMA和TCP技术的区别?3.使用RDMA的好处包括: ...
- jconsole的简单学习
摘要 jconsole 是JDK自带的一款图形化监测工具 他可以监测本地程序,也可以检测远程的机器 在没有其他监控手段可以使用的情况下可以快速进行必要的监测 使用方法也比较简单. 本地监控 jcons ...
- [转贴]Kubernetes之修改NodePort对外映射端口范围
https://www.cnblogs.com/minseo/p/12606326.html k8s默认使用NodePort对外映射端口范围是30000-50000可以通过修改kube-apiserv ...
- 记一次JSF异步调用引起的接口可用率降低
前言 本文记录了由于JSF异步调用超时引起的接口可用率降低问题的排查过程,主要介绍了排查思路和JSF异步调用的流程,希望可以帮助大家了解JSF的异步调用原理以及提供一些问题排查思路.本文分析的JSF源 ...
- echasrts定义折线图legend的样式-优化
option = { title: { text: '折线图堆叠' }, tooltip: { trigger: 'axis' }, //定义折线图legend的形状哈 legend: { itemW ...
- wap2app下拉刷新
支持全局刷新,支持vue项目 目前支持wap2app,uin-app全局下拉刷新 戳我阅读原文 --转载自微信公众号:酿俗
- 样本数量不平衡问题方案(Focal Loss & Circle Loss)
1.Focal Loss focal loss是最初由何恺明提出的,最初用于图像领域解决数据不平衡造成的模型性能问题.本文试图从交叉熵损失函数出发,分析数据不平衡问题,focal loss与交叉熵损失 ...