noVNC到x11vnc SSL连接

yon*_*192 5 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.0 "来自x11vnc.如果我关闭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?

kan*_*aka 14

首先澄清一下:

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

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

如果VNC服务器支持WebSocket连接,则不需要websockify.目前支持直接WebSocket连接的唯一VNC服务器是libvncserver的这个分支.websockify包含在noVNC中,因为大多数VNC服务器还不支持WebSocket客户端,但websockify是一个单独的项目.

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

  1. noVNC(浏览器)到websockify - 使用WebSocket协议
  2. websockify到x11vnc(VNC服务器) - 直接TCP套接字连接

WebSocket协议支持未加密的连接(ws://)和SSL/TLS加密连接(wss://).

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

现在问你的问题:

当您传递-ssl PEM给x11vnc时,这启用了RFB/VNC加密.noVNC不支持RFB/VNC加密.Javascript的速度不够快,加密/解密速度不够快,无法用于noVNC.有一些关于向Javascript添加加密API的讨论,这将使noVNC能够支持这种类型的加密.

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

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