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

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

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

И x11vnc, и noVNC запускаются на одном компьютере с помощью команд:

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

noVNC: ./utils/websockify --ssl-only --cert=[pem] --web=./ 6080 локальный хост: 5900

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

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

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


person yondaime1192    schedule 17.06.2011    source источник
comment
@yondaeme1192, на ваш вопрос ответили? Если да, можете ли вы принять ответ, чтобы другие могли найти «решенные» вопросы?   -  person kanaka    schedule 23.06.2011


Ответы (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) — прямое подключение к сокету TCP

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

Протокол RFB (удаленный буфер кадров), используемый в 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 зашифрованным или незашифрованным.

person kanaka    schedule 18.06.2011