соединение noVNC-x11vnc SSL


Я пытаюсь использовать SSL-соединение с x11vnc (VNC-сервер) и noVNC (VNC-клиент). Всякий раз, когда я пытаюсь подключиться, я получаю ошибку "неподдерживаемые типы безопасности: 19,18" от noVNC и " SSL: ssl_helper[2957]: exit case 2 (ssl_init failed) SSL: accept_openssl: куки из ssl_helper [2957] не удалось. 0" от x11vnc. Если я отключу SSL для x11vnc, клиент сможет подключиться без проблем.

Я понимаю, что x11vnc поставляется в комплекте с Java-апплетом зритель. Однако меня больше интересует новнк на основе HTML5.

И x11vnc, и noVNC работают на одной машине, используя команды:

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

NoVNC: ./утилиты/websockify --только SSL --верняк=[Пэм] --веб=./ 6080 localhost: 5900

Примечание: оба указывают на один и тот же pem. Я использую websockify вместо noVNC launch.sh чтобы иметь больше опций ,таких как -- ssl-only.

Вариант шифрования для noVNC, по-видимому, не влияют на подключение к серверу (результаты одинаковы, включен он или выключен).

Меня больше всего беспокоит безопасное соединение. На данный момент не похоже, что включение опции шифрования noVNC делает много, если SSL x11vnc должен быть выключен (опция шифрования заставляет noVNC использовать wss:// вместо ws://). Если это создаст безопасное соединение, пожалуйста, дайте мне знать. Иначе, как я могу заставить noVNC и x11vnc работать с SSL?

1 4
vnc

1 ответ:

Сначала несколько пояснений :

NoVNC и websockify фактически являются отдельными проектами:

  • websockify - это универсальный прокси-мост, который позволяет подключениям WebSocket (например, из браузера) подключаться к необработанным службам сокетов TCP (например, к серверу VNC).
  • noVNC - это HTML5 VNC-клиент.

Если VNC сервер поддерживает WebSocket соединения, то websockify не потребуется. Единственный VNC сервер, который в настоящее время поддерживает прямые соединения WebSocket - этоэта вилка libvncserver . websockify входит в состав noVNC, поскольку большинство VNC-серверов еще не поддерживают клиенты WebSocket, но websockify-это отдельный проект .

Вы имеете дело с двумя различными сетевыми соединениями, каждое из которых имеет отдельные параметры шифрования:

  1. noVNC (браузер) для websockify-использование протокола WebSocket
  2. websockify to x11vnc (VNC server) - прямое TCP-соединение сокета

Протокол WebSocket поддерживает незашифрованные соединения (ws://) и зашифрованные соединения SSL/TLS (wss://).

Протокол RFB (Remote Frame Buffer), используемый в VNC, имеет возможность обновления во время инициализации для использования зашифрованного соединения. Существует несколько поддерживаемых методов шифрования, таких как TLS (тип безопасности 18), VeNCrypt (тип безопасности 19).

Теперь к вашему вопросу :

При передаче -ssl PEM в x11vnc это включало шифрование RFB/VNC. noVNC не поддерживает Шифрование RFB / VNC. Javascript недостаточно быстр, чтобы сделать шифрование / дешифрование достаточно быстрым, чтобы его можно было использовать для noVNC. Существуетнекоторая дискуссия о добавлении крипто API в Javascript , который позволил бы noVNC поддерживать этот тип шифрования.

Когда вы включили шифрование в noVNC, вы включаете шифрование WebSocket (wss://). Это шифрует соединение между браузером и websockify. До тех пор, пока соединение между websockify и сервером VNC находится над доверенным сеть (например, работает как на одном сервере)и использовать WebSocket шифрование в noVNC, то никакие незашифрованные данные не будут выставлены. Однако, если вы запускаете websockify на той же системе, что и ваш браузер, и сервер VNC удален, то трафик VNC от вашего клиента к системе сервера не будет зашифрован (если noVNC не получит поддержку шифрования RFB/VNC VeNCrypt в будущем).

Выходные данные websockify будут указывать, является ли соединение WebSocket зашифрованным или незашифрованным.