如何在 Python 中实现安全的 WebSocket (wss://) 服务器?

2024-04-10

我想提供一个实时流,由于敏感数据必须对其进行安全加密。

我已经使用 gevent 和 Gunicorn 作为直接前端成功获得了正常的 WebSocket 流,但现在我需要确保其安全,并且正在寻找其中一个:

  1. 可以提供安全 WebSocket 连接的服务器,这些连接被代理到(例如)gunicorn,该枪监听非安全 WebSocket 连接。
  2. 可以直接提供安全 WebSocket 连接的框架。我一直在研究 Tornado 并相信它可以处理它,但我仍然愿意接受建议。
  3. 我将 ZeroMQ 用于 PUB/SUB 模式。如果 ZeroMQ 有一个好的 WebSocket 协议实现,那就太好了。

速度在这里并不是非常重要,因为连接数量会很少。然而,数据的完整性很重要。


假设您的应用程序在非 SSL Tornado WebSockets 上正确运行,请将监听调用更改为:

app.listen(args.listen_port, args.listen_interface) 

to:

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"),
    })

其中“mydomain.crt”和“mydomain.key”是您常用的 SSL 证书文件,lib_dir 是它们所在的目录。

不要忘记更改客户端以使用“wss:”

另请注意,如果您指定 ssl_options,则仍将使用您在侦听调用中指定的端口。即它不会恢复监听端口 443。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Python 中实现安全的 WebSocket (wss://) 服务器? 的相关文章

  • Twisted 的 Deferred 和 JavaScript 中的 Promise 一样吗?

    我开始在一个需要异步编程的项目中使用 Twisted 并且文档非常好 所以我的问题是 Twisted 中的 Deferred 与 Javascript 中的 Promise 相同吗 如果不是 有什么区别 你的问题的答案是Yes and No
  • 如何将中间件绑定到socket.io中的事件

    现在您可以将中间件绑定到io use middleware 但这仅在建立套接字连接时触发 有没有办法在将其传递给事件句柄之前拦截它 就像在expressjs中一样 换句话说 In 快递 js你可以做 app get middleware1
  • 补丁 - 为什么相对补丁目标名称不起作用?

    我已经从模块导入了一个类 但是当我尝试修补类名而不使用模块作为前缀时 出现类型错误 TypeError Need a valid target to patch You supplied MyClass 例如 以下代码给出了上述错误 imp
  • Kivy - 有所有颜色名称的列表吗?

    在 Kivy 中 小部件 color属性允许输入其值作为字符串颜色名称 也 例如在 kv file Label color red 是否有所有可能的颜色名称的列表 就在这里 来自Kivy 的文档 https kivy org doc sta
  • Python 2.7 中的断言对我来说不起作用示例assertIn

    我的 Mac 上安装了 python 2 7 通过在终端中运行 python v 进行验证 当我尝试使用任何新的 2 7 断言方法时 我收到 AtributeError 我看过http docs python org 2 library u
  • Mac OS X 中文件系统的 Unicode 编码在 Python 中不正确?

    在 OS X 和 Python 中处理 Unicode 文件名有点困难 我试图在代码中稍后使用文件名作为正则表达式的输入 但文件名中使用的编码似乎与 sys getfilesystemencoding 告诉我的不同 采取以下代码 usr b
  • 工作日重新订购 Pandas 系列

    使用 Pandas 我提取了一个 CSV 文件 然后创建了一系列数据来找出一周中哪几天崩溃最多 crashes by day bc DAY OF WEEK value counts 然后我将其绘制出来 但当然它按照与该系列相同的排名顺序绘制
  • Python3.0 - 标记化和取消标记化

    我正在使用类似于以下简化脚本的内容来解析较大文件中的 python 片段 import io import tokenize src foo bar src bytes src encode src io BytesIO src src l
  • 在没有模型的情况下将自定义页面添加到 django admin

    我正在尝试在没有模型关联的情况下向管理员添加自定义页面 这就是我迄今为止所取得的成就 class MyCustomAdmin AdminSite def get urls self from django conf urls import
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • Django send_mail SMTPSenderRefused 530 与 gmail

    一段时间以来 我一直在尝试使用 Django 从我正在开发的网站接收电子邮件 现在 我还没有部署它 并且我正在使用Django开发服务器 我不知道这是否会影响它 这是我的 settings py 配置 EMAIL BACKEND djang
  • Django 的 request.FILES 出现 UnicodeDecodeError

    我在视图调用中有以下代码 def view request body u for filename f in request FILES items body body Filename filename n f read n 在某些情况下
  • 在 Windows 上使用 apache mod_wsgi 运行 Flask 应用程序时导入冲突

    我允许您询问我在 Windows 上使用您的 mod wsgi portage 托管 Flask 应用程序时遇到的问题 我有两个烧瓶应用程序 由于导入冲突 只有一个可以同时存在 IE 如果请求申请 1 我有回复 然后 如果我请求应用程序 2
  • Geodjango距离查询未检索到正确的结果

    我正在尝试根据地理位置的接近程度来检索一些帖子 正如您在代码中看到的 我正在使用 GeoDjango 并且代码在视图中执行 问题是距离过滤器似乎被完全忽略了 当我检查查询集上的距离时 我得到了预期距离 1m 和 18km 但 18km 的帖
  • 通过索引访问Python字典的元素

    考虑一个像这样的字典 mydict Apple American 16 Mexican 10 Chinese 5 Grapes Arabian 25 Indian 20 例如 我如何访问该字典的特定元素 例如 我想在对 Apple 的第一个
  • 如何在 pandas 中使用 read_fwf 跳过空行?

    I use pandas read fwf http pandas pydata org pandas docs stable generated pandas read fwf htmlPython pandas 0 19 2 中的函数读
  • ANTLR 获取并拆分词法分析器内容

    首先 对我的英语感到抱歉 我还在学习 我为我的框架编写 Python 模块 用于解析 CSS 文件 我尝试了 regex ply python 词法分析器和解析器 但我发现自己在 ANTLR 中 第一次尝试 我需要解析 CSS 文件中的注释
  • 动态过滤 pandas 数据框

    我正在尝试使用三列的阈值来过滤 pandas 数据框 import pandas as pd df pd DataFrame A 6 2 10 5 3 B 2 5 3 2 6 C 5 2 1 8 2 df df loc df A gt 0
  • Django 与谷歌图表

    我试图让谷歌图表显示在我的页面上 但我不知道如何将值从 django 视图传递到 javascript 以便我可以绘制图表 姜戈代码 array Year Sales Expenses 2004 1000 400 2005 1170 460
  • 双击打开 ipython 笔记本

    相关文章 通过双击 osx 打开 ipython 笔记本 https stackoverflow com questions 16158893 open an ipython notebook via double click on osx

随机推荐

  • anaconda 中使用的 Gcc 版本的 python

    如何更改 anaconda 或虚拟环境中使用的 python gcc 版本 现在当我启动 python 时它显示 GCC 4 4 7 20120313 Red Hat 4 4 7 1 在linux2上 这与系统范围内的相同gcc in us
  • 我的问题是关于 R 的:如何对 R 中表中的每个重复进行编号?

    在我的数据集中 它们是全名列 例如 下面 我想在它旁边添加另一列 提及名称是否使用 R 出现了两次一 二 三 四 次 输出应类似于下面的列 重复次数 例如 数据集名称 People Full name Number of repetitio
  • 如何捕获并打印未知类型的异常

    我有一些程序 每次运行它时 它都会引发异常 我不知道如何检查它到底抛出了什么 所以我的问题是 是否可以捕获异常并打印它 如果它源自std exception你可以通过参考捕捉 try code that could cause except
  • 如何将 FFmpeg 命令行转换为 ffmpeg-python 代码?

    我有这个命令行代码 ffmpeg i 0 mp4 c v libx265 preset fast crf 28 tag v hvc1 c a aac bitexact map metadata 1 out mkv 我想将其转换为Python
  • 在同一个ipa中支持armv6和armv7

    我有一个 XCode 项目 配置如下 项目格式 XCode 3 1 兼容 架构 标准 armv6 armv7 基础 SDK 最新 iOS 当前设置为 iOS 4 2 仅构建活动架构 未选中 有效架构 armv6 armv7 我的问题 生成的
  • 如何在selenium中获取和设置文本编辑器值

    我的网页上有文本编辑器 我需要使用 c 中的 selenium 脚本填充其值 我知道如何为文本框执行此操作 我已经检查了流程在文本框中设置值 https stackoverflow com questions 10557196 using
  • 如何隐藏 optgroup/option 元素?

    有没有办法隐藏option or optgroupHTML 元素 我试过打电话hide 在 jQuery 中 也使用常规 Javascript 来设置style display none 它可以在 Firefox 中运行 但不能在任何其他浏
  • 带有 REST API 的 Ruby on Rails

    我对 Ruby on Rails 很陌生 虽然我喜欢所提供的组织和标准 但我对如何让 Rails 在这种特定情况下为我工作感到有点困惑 我有一个 Web 服务 我想将其与 Rails 应用程序一起使用 直接连接到数据库会很好 并且可以立即为
  • GXT 3.x EditorGrid:逐个单元选择单元格编辑器类型

    无论如何 是否可以逐个单元地定义编辑器类型GXT 3 0 我需要创建一个转置表 列变成行 行变成列 在这种情况下 一列 从普通表的角度来看 将具有不同的编辑器类型 而行将具有相同的编辑器类型 我正在尝试使用以下方法 它似乎工作正常 并允许根
  • 使输入类型=“密码”在移动设备上使用数字键盘

    在我为移动设备设计的网站上 我有一个用于 PIN 码的输入字段 我希望在输入文本时隐藏文本 并且希望当移动设备上的用户想要输入 PIN 码时弹出数字键盘 当类型 数字 时 数字键盘会弹出 但当类型 密码 时 数字键盘不会弹出 并且我无法 或
  • 如何在 Access 开发中使用版本控制?

    我参与更新 Access 解决方案 它有大量的 VBA 大量的查询 少量的表格以及一些用于数据输入和报告生成的表单 它是 Access 的理想候选者 我想更改表设计 VBA 查询和表单 如何使用版本控制跟踪我的更改 我们使用 Subvers
  • C 中的类型转换会变得香蕉吗? [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 看来 C 和我对这里的预期输出存在分歧 I have struct r struct int r i float r f
  • 有没有办法打印到输出控制台? (双猫3)

    有没有办法使用结构化文本打印输出到控制台 例如 VB NET 中的 debug print 双猫3 您可以通过 TwinCAT 代码通过 ADS 命令发送消息 该函数称为ADSLOGSTR https infosys beckhoff co
  • Cordova:意外的机器代码 - 您上传的内容同时包含位代码和本机机器代码

    我正在构建一个 iOS Cordova 应用程序 当我将其上传到 iTunes Connect 时 它返回以下错误 意外的机器代码 您上传的内容同时包含位代码和本机机器代码 当您提供位码时 无需也包含机器代码 要减少上传的大小 请使用 Xc
  • 如何让实体框架更新复杂类型?

    我正在使用实体框架 EF 从存储过程创建复杂类型 最近 存储过程发生了变化 添加了更多返回值 我想更新映射到该存储过程的复杂类型 这可能吗 如果可以 如何实现 我目前正在每次删除我的函数导入和复杂类型存储过程更改 这很可能不是最好的方法 我
  • 何时使用 RedirectToAction 以及何处使用 RedirectToRouteResult?

    Question 在什么情况下 我可以使用RedirectToAction以及在哪里使用RedirectToRouteResult 我有两个如下所示的操作方法 方法 1 public class ActionResultTypesContr
  • 如果我有使用 Google App Script 的缩略图链接,如何在 Google SpreadSheet 中显示缩略图?

    我正在实施 Google Apps 脚本并尝试在 Google Spread Sheet 中显示数据 我能够正确显示文本数据 但我有一个视频的缩略图 URL 我想在电子表格单元格中显示它 即我想显示与我的 java 脚本变量 对象中的 UR
  • 从具有动态外部 IP 的计算机连接到 Azure SQL Server

    我正在尝试将具有动态外部 IP 的本地笔记本电脑连接到我们的 Azure SQL Server 为此 我创建了一个虚拟网络网关并将笔记本电脑连接到该网关 此外 我还向 SQL Server 添加了一个专用端点 之后 我可以使用telnet成
  • 如何在 React 应用程序中使用 Tesseract.js

    我正在使用 React 开发一个应用程序 我希望能够加载图片 然后让 Tesseract js 将其转换为文本 我正在使用react dropzone加载图像文件 我可以使用img标签将图像添加到页面 但是当我尝试使用 Tesseract
  • 如何在 Python 中实现安全的 WebSocket (wss://) 服务器?

    我想提供一个实时流 由于敏感数据必须对其进行安全加密 我已经使用 gevent 和 Gunicorn 作为直接前端成功获得了正常的 WebSocket 流 但现在我需要确保其安全 并且正在寻找其中一个 可以提供安全 WebSocket 连接