【发布时间】:2020-07-11 16:58:57
【问题描述】:
近两年来,Google Chrome 不再支持 SSL over websocket。 现在我不知道他们真正的问题是什么,除了我听说他们通过 SSL 重写了他们的 WS 协议。而且我正在使用 IO::Socket::SSL 我想知道你们是否真的知道它。我的示例站点是一个 irc 机器人,它通过 WSS 上的 javascript 连接从 HTTPS 主机运行。 https://lichtsnel.nl.
它确实工作了很多年,但由于谷歌显然改变了他们的程序,Chrome 是唯一一个仍然无法工作的浏览器。我想知道你们是否注意到了这一点。我已经使用 IO::Socket::SSL 为与 SSL 相关的任何内容编写了一个客户端/服务器库。它通过 HTTPS 完美运行,但不知何故,WSS 发生了一些变化。他们并没有解决这个问题。虽然他们可能会将新标准强制用于 HTTPS 层。如果没有工作的 WSS 层,chrome 就变得毫无用处了。我不得不退回到 http/ws。剩下的功能少了很多。
不确定这些模块的更新情况如何,我最近可以更新,但还是很幸运,如果你有任何关于他们协议更改的信息。所以我发邮件看看我们是否可以期待更新让 chrome 再次工作。
致以诚挚的问候, 爱彼迎 多梅罗。
这是 perl 中的服务器端代码:
# SSL
my $sslerr=0;
if ($self->{ssl}) {
IO::Socket::SSL->start_SSL($client,
SSL_server => 1,
SSL_verify_mode => SSL_VERIFY_PEER,
SSL_cert_file => $self->{sslcert},
SSL_key_file => $self->{sslkey},
SSL_ca_file => $self->{sslca},
Listen => 128
) or $sslerr=1;
if ($sslerr) { print STDOUT prtm(),"Failed to ssl handshake: $SSL_ERROR\n"; close($client) }
}
并且服务器只记录以下内容:
ssl 握手失败:SSL 接受尝试失败
【问题讨论】:
-
我不太了解您对问题的描述 - 基本上我所了解的是您认为 Google 破坏了某些东西,但我不清楚细节。您的代码片段也不足以让我重现您遇到的问题,基本上您提供的只是一个需要(可选)客户端证书的 TLS 侦听器。目前尚不清楚什么客户端代码正在访问此服务器。如果您期望得到有用的答案,则可能需要更清楚地描述问题以及重现问题的方法。
-
客户端只不过是标准的 javascript websocket 客户端,在 https 主机上打开。我可以给你我完整的服务器模块。看看服务器说什么和做什么。但基本上我的代码示例是我只使用 IO::Socket::SSL 模块来打开它的。一切都在任何地方都有效,除了 chrome 因此他们为 wss 协议改变了一些东西。而且我不确定出了什么问题。它似乎纯粹是 ssl 握手,它只产生一条错误消息。 https 确实在同一个服务器模块上工作,
-
然而 websocket 本身对于基于 chrome 的 javascript websocket 客户端已损坏。任何其他浏览器或客户端都可以在 wss 上运行。就像使用 Firefox 一样,您可以通过 wss 连接进行连接和聊天.. 它仅在 chrome 中完全隔离.. 所以我的猜测是 chrome 改变了一些东西。而且我不知道如何修复这部分.. 这样 chrome 终于可以再次工作了.. 因为有很多 chrome 用户抱怨他们无法再打开聊天网站.. 我不得不为他们打开 http能够通过ws聊天..
-
javascript 基础:
var wserver = 'wss://chat.lichtsnel.nl:7474'; function connect() { ... socket = new WebSocket(wserver); socket.onopen = function() {..} socket.onmessage = function(evt) {.. etc我的服务器模块在线:github.com/FactorialCoin/base/blob/master/perl/site/lib/… -
“然而 websocket 本身对于基于 chrome 的 javascript websocket 客户端来说是坏的。” - 这绝对不是真的。 WSS 通常也适用于 Chrome,并且被大量使用,包括在 stackoverflow.com 上。例如,试试tests on websocket.org。因此,这是您的特定用例不起作用 - 但不幸的是,您没有提供足够的详细信息,只是声称 WSS 总体上已损坏。
标签: google-chrome ssl https wss