noVNC到x11vnc SSL连接

时间:2011-06-17 19:46:37

标签: ssl vnc

我正在尝试与x11vnc(VNC服务器)和noVNC(VNC客户端)使用SSL连接。每当我尝试连接时,我从noVNC收到错误“不支持的安全类型:19,18”和“SSL:ssl_helper [2957]:退出案例2(ssl_init失败) SSL:accept_openssl:来自ssl_helper的cookie [2957] FAILED。来自x11vnc的0“。如果我关闭x11vnc的SSL,客户端可以连接没问题。

我确实知道x11vnc确实打包了一个基于java的applet viewer。但是,我对基于HTML5的noVNC更感兴趣。

x11vnc和noVNC都使用以下命令在同一台机器上运行:

x11vnc: x11vnc -forever -shared -unixpw_cmd [cmd] -ssl [pem]

noVNC:./ utils /websockify --ssl-only --cert = [pem] --web =。/ 6080 localhost:5900

注意:两者都指向同一个pem。我使用websockify而不是noVNC的launch.sh来获得更多选项,例如--ssl-only。

noVNC的加密选项似乎对连接服务器没有影响(无论是打开还是关闭,结果都是相同的。)

我最担心的是安全连接。截至目前,如果必须关闭x11vnc的SSL,则看起来似乎没有启用noVNC的加密选项(加密选项使noVNC使用wss://而不是ws://)。如果这确实建立了安全连接,请告诉我。另外,如何让noVNC和x11vnc使用SSL?

1 个答案:

答案 0 :(得分:14)

首先澄清

noVNC和websockify实际上是独立的项目:

  • websockify是一个通用代理/网桥,允许WebSocket连接(例如从浏览器)连接到原始TCP套接字服务(例如VNC服务器)。
  • noVNC是HTML5 VNC客户端。

如果VNC服务器支持WebSocket连接,则不需要websockify。当前支持直接WebSocket连接的唯一VNC服务器是this fork of libvncserver。 websockify包含在noVNC中,因为大多数VNC服务器还不支持WebSocket客户端,但websockify是separate project

您正在处理两个不同的网络连接,每个网络连接都有单独的加密选项:

  1. noVNC(浏览器)到websockify - 使用WebSocket协议
  2. websockify到x11vnc(VNC服务器) - 直接TCP套接字连接
  3. WebSocket协议支持未加密连接(ws://)和SSL / TLS加密连接(wss://)。

    VNC中使用的RFB协议(远程帧缓冲区)能够在初始化期间升级以使用加密连接。支持多种加密方法,如TLS(安全类型18),VeNCrypt(安全类型19)。

    现在回答您的问题

    当您将-ssl PEM传递给x11vnc时,启用了RFB / VNC加密。 noVNC不支持RFB / VNC加密。 Javascript的速度不够快,加密/解密速度不够快,无法用于noVNC。有some discussion about adding a crypto API to Javascript可以使noVNC支持这种类型的加密。

    在noVNC中启用加密后,您将启用WebSocket加密(wss://)。这会加密浏览器和websockify之间的连接。只要websockify与VNC服务器之间的连接通过可信网络(例如,在同一服务器上运行)并在noVNC中使用WebSocket加密,就不会暴露未加密的数据。但是,如果您在与浏览器相同的系统上运行websockify且VNC服务器是远程的,那么从您的客户端到服务器系统的VNC流量将不会被加密(除非noVNC将来获得RFB / VNC VeNCrypt加密支持)。 / p>

    websockify的输出将指示WebSocket连接是加密还是未加密。