【问题标题】:Websockets via secure http server with client certificate authentication通过具有客户端证书身份验证的安全 http 服务器的 Websockets
【发布时间】:2012-10-26 03:13:55
【问题描述】:

我有一个 PSGI/Plack 应用程序托管在反向 https 代理后面。访问者使用客户端证书进行身份验证。我使用 websockets 来传递数据(比如,“tail -f”的输出异步到浏览器。直接访问时应用程序工作正常,但通过反向 https 代理访问时不能正常工作。有什么方法可以使用客户端证书身份验证网络套接字?

【问题讨论】:

    标签: javascript websocket client-certificates


    【解决方案1】:

    有两种选择:

    1. 让反向代理终止 TLS,执行基于客户端证书的身份验证,并将未加密的流量转发到后面的 WebSocket 服务器

    2. 让反向代理将 TLS 原封不动地转发到 WebSocket 服务器

    使用 2.,您将需要一个实现 TLS 和基于客户端证书的身份验证的 WebSocket 服务器。

    这是一个基于 Autobahn(基于 Python/Twisted)的启用 TLS 的 WebSocket 服务器示例:

    您可以按照此处的示例添加客户端证书身份验证:

    免责声明:我是 Autobahn 的作者,为 Tavendo 工作。

    【讨论】:

    • 谢谢。选项 2:我被限制使用 Perl websocket 服务器(出于技术以外的原因),据我所知,没有支持 SSL 的服务器。我必须检查选项 1,因为它不需要支持 SSL 的 WS 服务器。如果我有问题会在这里报告。再次感谢您 - 文档为它们的目的而编写得非常好。
    • @oberstet ,嗨,我正在尝试针对 Tornado 的 websocket 实现使用 websocket python 客户端,实际上,我正在对 django 应用程序进行身份验证,我在其中使用会话 ID 跟踪用户。问题是:我无法将标头(将会话 id 传递给 Tornado websocket 服务器,然后检查会话存储库)到已经存在的 websocket python 客户端实现。高速公路可以做到这一点,给我一个例子将不胜感激。另外,如果高速公路可以以某种方式为我简化这个过程,请引导我。谢谢!
    • 目前没有用户 API 来设置在 AutobahnPython 客户端初始打开 WS 握手期间发送的自定义 HTTP 标头。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多