【发布时间】:2018-11-01 09:07:03
【问题描述】:
我有一个 websocket 服务器,使用 PHP 的 socket 库实现,一切正常……前提是您使用的是 ws:// 协议。
但是,我们现在需要升级库以通过 SSL 工作,即支持 wss:// 协议。
是否可以使用 PHP socket 函数实现 wss://(或更一般地说,SSL 连接),还是我们需要重写代码以使用 stream_socket 函数?
(请注意,切换到stream_socket 可能还有其他充分的理由,因此无论答案如何,我们都可以考虑这样做。但是,在我花时间评估这两个选项之前,我想确认一下坚持socket 对我们来说甚至是一种选择。)
【问题讨论】:
-
FWIW,SSL 应该由 Web 服务器甚至更早终止(例如代理、负载均衡器),应用程序代码不需要担心这些细节。
-
我们谈论的是用 PHP 实现的 web 服务器(或 websocket 服务器,在这种情况下)。它前面可能有也可能没有代理/负载均衡器,但对于我们的大多数部署来说,没有。
-
我会用 PHP 的 nginx in front 之类的东西来管理它,或者因为这些天我的大部分东西都在 AWS 上运行,这是一个 AWS 负载均衡器,它将管理证书为了我。只是说,我发现这种关注点分离是有益的。
-
向不支持它的服务添加 SSL/TLS 的一种常见方法是 stunnel。这免除了您在 websocket 服务器中支持它的需要。更多信息...stunnel.org
-
可以做但是需要你实现很多在使用
stream_socket函数时已经为你做的事情。