Ssl noVNC仅使用HTTPS连接到专用LAN上的VNCServer
不确定我是否真的是最新的,但我正在寻找一种方法,将我现有的项目转换为使用HTML5WebSocket 我的情况如下:Ssl noVNC仅使用HTTPS连接到专用LAN上的VNCServer,ssl,websocket,vnc,vnc-server,Ssl,Websocket,Vnc,Vnc Server,不确定我是否真的是最新的,但我正在寻找一种方法,将我现有的项目转换为使用HTML5WebSocket 我的情况如下: - Client runs a modified java vnc applet with extra parameter (CONNECT). - Modified stunnel listenin on webserver (with both public, private IP) port 443 - Client connects to 443 and sends
- Client runs a modified java vnc applet with extra parameter (CONNECT).
- Modified stunnel listenin on webserver (with both public, private IP) port 443
- Client connects to 443 and sends (prior to RFB) a HTTP packet like :
'CONNECT 10.0.0.1:4001'
- Stunnel opens a new stream to 10.0.0.1:4001 using SSL wrapper
- VNC Server (@10.0.0.1:4001) responds, connection is established.
现在我想摆脱Java小程序,使用NoVNC切换到Websocket
我希望能够:
- Open a single port on the webserver (HTTPS preferably)
- Have client connect using HTML5 only (no more java applet)
我不能改变:
- VNCServer will still be listening on private LAN only.
- VNCServer will still listen to a bunch of ports, each corresponding to
a virtual server
问题是:
- How to give NoVNC the notion of target HOST:PORT ?
- Is stunnel still be usable ? Or should I change to websocket proxy ?
如果有人有一个出发点,我真的很感激 免责声明:我创建了noVNC,所以我的答案可能有很大的偏见;-)
我先回答你第二个问题:
noVNC不能直接使用stunnel。问题在于WebSockets协议有一个类似HTTP的初始握手,并且消息是框架化的。此外,在向WebSockets添加二进制有效负载支持之前,有效负载由WebSockets代理(websockify)进行base64编码。向stunnel添加必要的支持并非微不足道,但肯定是可行的。事实上,这是一个理想的功能,以增加这种支持特技
第一个问题:
noVNC已经有了主机的概念:通过RFB.connect(主机、端口、密码)
方法进行端口连接。顶层的文件vnc_auto.html
显示了如何让noVNC根据URL查询字符串参数指定的主机、端口和密码在页面加载时自动连接
然而,我认为您真正要问的是如何让noVNC连接到后端的备用VNC服务器端口。noVNC和websockify没有直接解决这个问题。有几种方法可以解决这个问题,通常包括带外设置/授权机制,这样代理就不能被任意主机用来发起攻击。例如,在我的公司,我们有一个基于web的管理框架,它集成了noVNC,当用户想要连接到控制台时,一个经过身份验证的AJAX调用用于为特定用户和他们想要连接的系统配置代理。我们的web管理界面仅限于内部
Ganeti Web Manager使用类似的模型,源代码可用。他们有一个支持WebSockets的VNCAuthProxy分支。它们使用从web界面到VNCAuthProxy的控制通道来设置与特定VNC服务器主机:端口关联的临时密码
此外,OpenStack(Nova)集成了noVNC,使用类似的带外令牌模型,允许使用Nova vncproxy进行访问
一些链接: