【问题标题】:Use Secure Websocket with PHP - Crypted handshake通过 PHP 使用安全 Websocket - 加密握手
【发布时间】:2012-07-12 02:53:11
【问题描述】:

我读到(安全)Websocket 使用与 HTTP(S) 协议相同的端口。 但是,我的 PHP Websocket 服务器收到来自客户端的加密握手,我正在监听 12345 端口上的打开连接。

我的系统通过非安全 websocket 运行良好,但我需要添加安全功能,但我不明白为什么我会收到这些加密握手。多亏了 OSI 模型,这对我来说是透明的......

如果我配置 apache 来激活 SSL 引擎并监听 12345 端口。我将无法再次为我的 PHP Websocket 服务器使用此端口,因为它将处于“已使用”状态......或者我忘记了一些东西......

我迷路了:(

编辑:

这是我的安全 websocket 标头(使用 wss://):

Request URL:wss://localhost:12345/

这里是我的简单 websocket 标头(使用 ws://):

Request URL:ws://localhost:12345/ Request Method:GET Status Code:101 Switching Protocols Request Headersview source Connection:Upgrade Host:localhost:12345 Origin:http://localhost Sec-WebSocket-Extensions:x-webkit-deflate-frame Sec-WebSocket-Key:wovBDvKiKdy/+0Y2BQPr9w== Sec-WebSocket-Version:13 Upgrade:websocket (Key3):00:00:00:00:00:00:00:00 Response Headersview source Connection:Upgrade Sec-WebSocket-Accept:1ao7ngQG4LAa3JxFibyvoocbSAM= Upgrade:websocket (Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00

为什么我在没有安全连接的情况下获得更多?

【问题讨论】:

  • html5 Websocket with SSL的可能重复
  • 我已经看过这篇文章了,不,它不是重复的 =)
  • 不,它回答了你的问题。如果您的套接字是用ws:// 打开的,它将是一个标准套接字。如果是wss://,它将是一个 SSL 套接字。
  • 你想用 SSL 运行你的 Websocket 服务器吗?如果不是,这只是使用错误协议的不良客户端的问题。
  • 我试图解释的是当我使用http:// 然后ws:// 我的系统工作。但是如果我使用https:// 那么wss:// 我会在我的phpwebsocket 服务器上收到加密的握手。

标签: php security websocket handshake


【解决方案1】:

我读到(安全)Websocket 使用与 HTTP(S) 协议相同的端口

默认情况下,是的 - 但您可以通过 URL 覆盖两者中的端口,请考虑:

http://www.example.com:443/
https://www.example.com:8080/
http://www.example.com:12345/

如果其他东西已经在监听特定的端口/地址,那么你不能在那里运行第二台服务器 - 所以如果你的网络服务器已经在监听端口 443 (https),​​你将无法运行单独的 websocket服务器在同一个端口上。

只需将 HTTPS 服务器留在 443,然后在 12345 运行 ssl ws 服务器即可。


刚刚看到你的最后一条评论。

SSL 不仅仅与您监听的端口有关 - 流量是加密的。如果你想处理 wss 流量,那么你需要一个支持 SSL 的服务器。有多种实现方式,这取决于您如何实现当前服务器。

【讨论】:

  • 我需要 https:// 和 wss:// 功能。我是否需要像 httpd.conf 文件 (Apache2) 中的端口 443 一样使用第二个证书配置端口 12345,或者我购买的那个可以使用两次?顺便谢谢你的解释=)
  • 您可以使用相同的证书,如果是我,我根本不会尝试使用 Apache 来处理 ws/wss 流量 - 有更好的解决方案。哪个是最好的取决于你已经准备好了,但你可以做的比看看github.com/kumina/wsproxy
  • 我想知道是否有一个可以解密 SSL 的 php websocket 服务器(例如使用 OpenSSL)。使用 stunnel 可能是一个很好的解决方案,因为如果我了解它的工作原理,我就不必更改我的 websocket 服务器。
  • 好的,我给你一些消息...我使用stunnel 提供了使用我的安全 websocket 所需的解密。它在 Chrome 中运行良好,但我在使用 Firefox 时遇到了一些问题,它不会发送正确的标题。同样,Firefox + Http + Ws 有效,但是当我使用 Firefox + Https + Wss 时,缺少以下标头:Sec-WebSocket-VersionSec-WebSocket-Key。任何想法?我好近!! ^^
  • 我刚刚接受了端口 12345 上的自动签名证书以及端口 443 上的证书,现在它可以像我希望的那样工作。 =)
猜你喜欢
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-22
  • 2012-04-18
  • 1970-01-01
相关资源
最近更新 更多