我想提供由于敏感数据而必须安全加密的实时流.
我已成功使用gevent和gunicorn作为直接前端获得正常的WebSockets流式传输,但现在我需要使其安全,并且我正在寻找以下任何一种:
速度在这里并不重要,因为连接数量很少.但是,数据的完整性很重要.
假设您的应用程序在非SSL Tornado WebSockets上正确运行,请更改listen调用:
app.listen(args.listen_port, args.listen_interface)
Run Code Online (Sandbox Code Playgroud)
至:
app.listen(args.listen_port, args.listen_interface, ssl_options={
"certfile": os.path.join(lib_dir, "mydomain.crt"),
"keyfile": os.path.join(lib_dir, "mydomain.key"),
})
Run Code Online (Sandbox Code Playgroud)
其中"mydomain.crt"和"mydomain.key"是您通常的SSL证书文件,lib_dir是它们所在的目录.
不要忘记更改客户端以使用"wss:"
另请注意,如果指定ssl_options,仍将使用您在listen调用中指定的端口.即它不会恢复到侦听端口443.
您可以查看websockify项目.Websockify是一个代理,允许支持WebSockets的浏览器与原始二进制TCP服务器通信.它通过base64编码进出浏览器的所有流量来完成此操作.但是,该项目是模块化的,websocket.py文件是一个通用的WebSocket服务器,旨在扩展(还有一些包含的测试,显示它是如何工作的).如果您的项目不需要,那么禁用base64编码会相当容易.
Websockify还包括一个Javascript库'websock.js',旨在与websockify进行交互.如果浏览器没有本机WebSocket支持,它将透明地回退到使用web-socket-js(基于Flash).
Websockify支持安全(TLS/wss)连接,并且还能够在同一端口上内联回答Flash安全策略请求.
免责声明:我做了websockify.
看一下Google 支持的pywebsocket项目的独立 websockets 服务器。
请注意,此 Python 模块使用CGIHTTPServer,因此您需要调整它以确保其安全。几个月前我参与的一个项目也有类似的要求,所以我分叉了standalone.py模块并删除了与CGI 内容的依赖关系,但我还没有对安全连接进行太多测试。
也许您可以像我的脚本中那样导入OpenSSL.SSL并设置 a 。WebSocketServer它应该使用WebSocketRequestHandler具有正确配置的use_tls,private_key和certificate来实现 TLS(传输层安全性)。
阅读源代码。我认为您可以扩展它来满足您的需求。
| 归档时间: |
|
| 查看次数: |
25212 次 |
| 最近记录: |