websocket 安全通信

WebSocket 协议

WebSocket:在 2008 年诞生,2011 年成为国际标准。它允许服务器主动向客户端推送信息,客户端也可以主动向服务器发送信息,实现了真正的双向平等对话。它是一种在单个 TCP 连接上进行全双工通讯的协议,能够更高效地进行实时通信。

传统的轮询:浏览器需要不断地向服务器发出 HTTP 请求,浪费带宽和服务器资源。

WebSocket 的优点:

  • 建立在 TCP 协议之上,服务器端实现相对容易。
  • 与 HTTP 协议兼容性好,默认端口也是 80 和 443,握手阶段采用 HTTP 协议。
  • 数据格式轻量,通信高效。
  • 支持文本和二进制数据传输。
  • 无同源限制,客户端可以与任意服务器通信。
  • 协议标识符是 ws(不加密)和 wss(加密)

WS 和 WSS

  • WS(WebSocket):是一种在单个 TCP 连接上进行全双工通讯的协议。它允许服务器和客户端之间进行实时双向通信。
  • WSS:是加密的 WebSocket 协议,相当于 WebSocket 加上 SSL/TLS 加密层。
    WS + SSL/TLS = WSS。

python sample

  1. 生成无密码保护的自签名证书

    openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

common name 也就是你的domain的name, 正式的项目中需要使用第三方认证机构提供的证书

  1. server端代码
python 复制代码
import asyncio
import ssl
import websockets

async def echo(websocket, path):
    async for message in websocket:
        await websocket.send(message)

ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
ssl_context.load_cert_chain(certfile="cert.pem", keyfile="key.pem")

start_server = websockets.serve(echo, "localhost", 8765, ssl=ssl_context)

asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
  1. client 端代码, python 端
python 复制代码
import asyncio
import ssl
import websockets

async def hello():
    ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
    ssl_context.load_verify_locations("cert.pem")

    uri = "wss://localhost:8765"
    async with websockets.connect(uri, ssl=ssl_context) as websocket:
        await websocket.send("Hello, world!")
        greeting = await websocket.recv()
        print(f"< {greeting}")

asyncio.get_event_loop().run_until_complete(hello())

其他

正式的wss 需要使用第三方进行认证,如let's encrypt 等服务, 而不是自己生成的证书。

相关推荐
扑火的小飞蛾2 小时前
网络安全小白学习路线图 (基于提供文档库)
学习·安全·web安全
pusheng20253 小时前
算力时代的隐形防线:数据中心氢气安全挑战与技术突破
前端·安全
DX_水位流量监测4 小时前
大坝安全监测之渗流渗压位移监测设备技术解析
大数据·运维·服务器·网络·人工智能·安全
寂寞恋上夜4 小时前
异步任务怎么设计:轮询/WebSocket/回调(附PRD写法)
网络·人工智能·websocket·网络协议·markdown转xmind·deepseek思维导图
Tao____5 小时前
基于Ruoyi开发的IOT物联网平台
java·网络·物联网·mqtt·网络协议
九河云5 小时前
从“被动适配”到“主动重构”:企业数字化转型的底层逻辑
大数据·人工智能·安全·重构·数字化转型
Yan-英杰7 小时前
BoostKit OmniAdaptor 源码深度解析
网络·人工智能·网络协议·tcp/ip·http
黄焖鸡能干四碗8 小时前
信息安全网络安全评估报告(WORD)
大数据·网络·人工智能·安全·web安全·制造·需求分析
汽车仪器仪表相关领域8 小时前
光轴精准测量,安全照明保障——NHD-8101/8000型远近光检测仪项目实战分享
数据库·人工智能·安全·压力测试·可用性测试
pps-key9 小时前
Afrog漏洞扫描器:从入门到入狱......边缘的摇摆记录(pps-key黑化版)
linux·计算机网络·安全·网络安全