【问题标题】:Is it possible to implement SSL (wss://) using PHP socket extension?是否可以使用 PHP 套接字扩展实现 SSL (wss://)?
【发布时间】: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函数时已经为你做的事情。

标签: php sockets ssl websocket


【解决方案1】:

我代表@BA_Webimax 提交了一个答案,他在评论中发布了可能是正确答案的内容,但没有返回以使其成为我可以接受的答案。

所以直接回答“有可能吗?”这个问题:

这是可能的,但需要您实现很多在使用 stream_socket 函数时已经为您完成的事情。

-- @BA_Webimax

为了进一步充实这一点,这意味着手动处理所有 SSL 协商和加密。这将是一项相当大的工作量,需要进行大量测试,并且如果实施不正确,则存在引入安全漏洞的风险。

重写代码以使用 stream_socket 函数可能会更快、更安全、更健壮。

因此,虽然技术上的答案是肯定的,但有可能,实用的答案可能是否定的,不是。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多