gpt4 book ai didi

javascript - 无法通过 TLS 连接到 Websocket 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 15:08:33 25 4
gpt4 key购买 nike

我一直在使用 Javascript 前端和 Java 后端测试 Websockets 的功能。我已经设法在使用标准 HTTP/WS 协议(protocol)的客户端和服务器之间进行通信,但我想启用 HTTPS 来为前端(网站)提供服务,然后使用 WSS 连接到服务器 Java 端点。

到目前为止,我已经使用自签名证书通过 HTTPS/TLS 设置了网站,并且我能够使用 HTTPS 协议(protocol)导航到该网站:“https://domain-name.chat ”。

现在我假设这只是在建立新的 Websocket 连接时将 uri 中的协议(protocol)更改为 WSS 的问题,所以我将 uri 更改为“wss://domain.name.chat/服务器端点”。

现在当我加载网页时,连接没有建立,因为它触发了 Websocket.onclose() 事件处理程序。

我知道代码没有问题,因为它以前使用 HTTP/WS 工作。

我对 Websockets 没有跨域脚本阻塞问题的理解是否正确?

我是否在设置 HTTPS/WSS 的过程中遗漏了一个步骤?

编辑:为网站域添加了虚拟主机信息

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin webmaster@localhost
ServerName domain-name.chat
ServerAlias www.domain-name.chatt

DocumentRoot /usr/local/apache-tomcat-7.0.47/webapps/WebSocketChat/
RewriteEngine on
RewriteRule ^/(.*)$ /WebSocketChat/$1 [l,PT]
JkMount /* worker2

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key

</VirtualHost>
</IfModule>

这是 Tomcat7 的 server.xml 中的连接器设置:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="250" scheme="https" secure="true"
keystoreFile="${user.home}/.keystore" keystorePass="changeit"
clientAuth="false" sslProtocol="TLS" />

最佳答案

由于您使用的是自签名证书,即使一切设置正确,浏览器也有可能拒绝连接。

例如,我的 Safari 浏览器不会连接到我的自签名证书服务器 (Iodine),而 Chrome 会。

我认为 Safari 会不断检查证书注册表,而 Chrome 不会(如果您通过了警告屏幕)...这是特定于浏览器的。

Websocket 协议(protocol)规定,如果证书无效,浏览器应终止连接。

至于:

Am I right in understanding that Websockets doesn't have the issues of cross-domain script blocking?

它不是那么简单,并且有一个次要的安全 header 可以防止跨站点脚本。

虽然这一点的安全性很容易绕过,但浏览器会发送 header Origin 来说明原始 URL。当您尝试连接到不同 URL 上的 Websocket 时,服务器可能会拒绝该连接,除非它被设置为接受来自任何来源的连接。

编辑:评论引起的另一个想法是您的服务器可能未正确设置。您是直接连接到明文 websocket 服务器还是使用 apache?对于代理 Websockets 的 apache,需要进行一些调整(搜索 mod_websocket )。

关于javascript - 无法通过 TLS 连接到 Websocket 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31654693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com