php - 使用 stunnel 和 Ratchet 保护 websocket。连接已关闭

标签 php websocket ratchet stunnel

我有一个使用 Ratchet 和 ZeroMQ 的 websockets 解决方案,如他们的 push integration documentation 中所述。 .我遇到的问题是生产应用程序通过 SSL 提供服务,并且当通过安全网站请求时,不安全的 websockets 在 Firefox 中不起作用。这个问题是众所周知的,两个建议是使用 stunnel,或者使用 nginx 作为 Web 服务器。我不能使用 nginx,所以我唯一的选择是 stunnel,但客户端无法连接。

这是我的 stunnel 配置:

client = no
chroot = /var/lib/stunnel/
setuid = stunnel
setgid = nogroup
pid = /var/run/stunnel.pid
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
cert = /etc/apache2/server.info.crt
key = /etc/apache2/server.info.key

[websocket]
accept = 8079
connect = 8080

Ratchet 配置为在 8080 中监听:
$webSock = new React\Socket\Server($loop);
$webSock->listen(8080, "0.0.0.0"); // Binding to 0.0.0.0 means remotes can connect
$webServer = new Ratchet\Server\IoServer(
  new Ratchet\Http\HttpServer(
      new Ratchet\WebSocket\WsServer(
          new Ratchet\Wamp\WampServer(
              $pusher
          )
      )
  ),
  $webSock
);

并且客户端正在尝试通过 wss://server.ip:8079 连接但是没有客户端可以连接,一旦发出请求,它们就会断开连接。

有任何想法吗?

最佳答案

我也在使用 Ratchet 进行加密时经历了 stunnel。我的整个stunnel.conf看起来像这样。使用与我的 apache httpd 服务器相同的 pem。

cert = /etc/apache2/ssl/cert.pem

[websocket]
accept = YOUR_PUBLIC_IP_ADDRESS:8079
connect = 127.0.0.1:8080

您可能缺少端口之前的 IP 地址。我将 key 和证书组合到一个 pem 中,但同时使用它们应该可以工作。

关于php - 使用 stunnel 和 Ratchet 保护 websocket。连接已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20713044/

相关文章:

php - wss 在 apache 服务器上故障转移 https

go - 如何使用 Gorilla 指定 WS ping 的频率

php - Ratchet 多台服务器

php - 如何使用 Ratchet 发送特定套接字连接的事件

php - 在具有不同列的 3 个不同表中搜索用户

php - 从 CodeIgniter URL 中删除 index.php

php - 当用户单击 "vote"w/php & mysql 时增加记录的分数

javascript - websocket + vuejs : screen flickering, 可见 mustache 代码

php - Ratchet (php) 使用类 MessageComponentInterface 和 WampServerInterface 一起使用 websockets 和推送通知

php - Dockerized Laravel 应用程序,总是 404 Assets