python3发送需要双向认证的wss请求
websocket链接python有很多封装好的库:websocket-client、websockets、aiowebsocket 这里用的websokets
此次接口要求:1、需要双向认证 2、wss协议 3、发送数据和接受数据都需要序列化和反序列化(probuff)
 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请求的更多相关文章

  1. ASIHTTPRequest实现https双向认证请求

    什么是双向认证呢?简而言之,就是服务器端对请求它的客户端要进行身份验证,客户端对自己所请求的服务器也会做身份验证.服务端一旦验证到请求自己的客户端为不可信任的,服务端就拒绝继续通信.客户端如果发现服务 ...

  2. HTTPS 双向认证构建移动设备安全体系

    HTTPS 双向认证构建移动设备安全体系 对于一些高安全性要求的企业内项目,我们有时希望能够对客户端进行验证.这个时候我们可以使用Https的双向认证机制来实现这个功能. 单向认证:保证server是 ...

  3. ssl双向认证和单向认证原理

    有朋友在搞一个项目,周末有聊到一些安全性的东西,很自然会想起https,但https究竟如何实施,其原理又是什么? 基于ssl,一般的应用都是单向认证,如果应用场景要求对客户来源做验证也可以实现成双向 ...

  4. m.Tomcat使用openssl走APR通道配置单向和双向认证

    引用自: http://blog.csdn.net/gtuu0123/article/details/5827800(Tomcat的SSL单向认证)  http://blog.csdn.net/gtu ...

  5. 基于SSL协议的双向认证 - 双向认证 [3]

    1      SSL双向认证的实现 这里是基于SSL和Tomcat配置实现的,配置方法如下: 1.1    生成CA数字证书 首先需要配置OPENSSL环境变量. 我的OPENSSL配置文件路径是“D ...

  6. 基于SSL协议的双向认证 - SSL协议 [1]

    1  概要说明 在互联网通信方式中,目前用的最广泛的是HTTPS配合SSL和数字证书来保证传输和认证安全了. 2  详细介绍 2.1    HTTPS HTTPS全称:Hypertext Transf ...

  7. 基于openssl的单向和双向认证

    1.前言 最近工作涉及到https,需要修改nginx的openssl模块,引入keyless方案.关于keyless可以参考CloudFlare的官方博客: https://blog.cloudfl ...

  8. tomcat------https单向认证和双向认证

     一.https分为单向认证和双向认证: 单向认证就是说,只有客户端使用ssl时对服务器端的证书进行认证,也就是说,客户端在请求建立之前,服务器端会向客户端发送一个证书,一般情况下,这种证书都是由自己 ...

  9. nginx配置ssl加密(单双向认证、部分https)

    nginx配置ssl加密(单双向认证.部分https) nginx下配置ssl本来是很简单的,无论是去认证中心买SSL安全证书还是自签署证书,但最近公司OA的一个需求,得以有个机会实际折腾一番.一开始 ...

  10. HTTPS 中双向认证SSL 协议的具体过程

    HTTPS 中双向认证SSL 协议的具体过程: 这里总结为详细的步骤: ① 浏览器发送一个连接请求给安全服务器.② 服务器将自己的证书,以及同证书相关的信息发送给客户浏览器.③ 客户浏览器检查服务器送 ...

随机推荐

  1. 阿里云龙蜥8.6部署SQLSERVER2022的过程

    阿里云龙蜥8.6部署SQLSERVER2022的过程 背景 之前总结过, 但是发现当时是preview版本. 这里想升级一下, 并且顺便抄一下他的部分说明 下载 wget https://packag ...

  2. [转帖]kafka_export 部署实战

    https://zhuanlan.zhihu.com/p/57704357 Kafka Exporter 监控 Kafka 实时数据 需要安装的组件 Prometheus:时序数据库,按时间保存监控历 ...

  3. [转帖]s3fs - 使用S3FS存储桶目录允许其他用户使用权限

    https://www.coder.work/article/6661505   我在使用S3FS时遇到问题.我正在使用 ubuntu@ip-x-x-x-x:~$ /usr/bin/s3fs --ve ...

  4. [转帖]CygWin、MingW、MSYS之间的关系

    https://www.jianshu.com/p/09198f6e0a3c 前言 在跨平台开发或移植中,经常会听说Cygwin.MingW.MSYS,他们之间是什么关系?对于将要完成的任务,应该选择 ...

  5. [转帖]VMware常用软件ISO下载汇总(2023年6月更新)

    https://www.dinghui.org/vmware-iso-download.html#vcsa-patch 请访问 www.dinghui.org 获得最新版,文章将持续更新.[最后更新时 ...

  6. [转帖]​Linux开源存储漫谈(2)IO性能测试利器fio

    fio(Flexible I/O Tester)正是非常常用的文件系统和磁盘 I/O 性能基准测试工具.提供了大量的可定制化选项,可以用来测试,裸盘.一个单独的分区或者文件系统在各种场景下的 I/O ...

  7. [转帖]Oracle入门精读28-字符集 AL32UTF8与UTF8

    字符(Character) 字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等. 字符编码(Character Encoding) 是一套法则,使用该法则能够对自然语言的字符的一个 ...

  8. GS7 备份恢复之后客户端登录报错的解决方法:COM 类工厂中 CLISID 为 xxxx的组建失败, 原因是出现了一下错误 8000401a

    1. 最近需要创建一个用户的数据库应用信息, 备份恢复之后发现有时候一些环境无法使用. COM 类工厂中 CLISID 为 xxxx的组建失败, 原因是出现了一下错误 8000401a 错误图片为 2 ...

  9. redis 6源码解析之 事件

    redis的事件分为:文件事件和时间事件.文件事件是基于I/O的事务处理,时间事件则是基于时间点的事务处理.redis事件支持的多路复用包含四个实现:ae_epoll.c,ae_evport.c,ae ...

  10. vuex4的简单使用

    安装vuex cnpm install vuex@next --save 官网地址是 https://vuex.vuejs.org/zh/guide/#%E6%9C%80%E7%AE%80%E5%8D ...