Первые пояснения :
noVNC и websockify фактически являются отдельными проектами:
- websockify - это универсальный прокси / мост, который позволяет соединениям WebSocket (например, из браузера) подключаться к необработанным службам сокетов TCP (например, VNC-серверу).
- noVNC - клиент HTML5 VNC.
Если VNC-сервер поддерживает соединения WebSocket, то websockify не понадобится. Единственный VNC-сервер, который в настоящее время поддерживает прямые соединения WebSocket, - это это ответвление libvncserver . websockify включен в noVNC, так как большинство серверов VNC еще не поддерживают клиенты WebSocket, но websockify - это отдельный проект .
Вы имеете дело с двумя различными сетевыми подключениями, каждое из которых имеет отдельные параметры шифрования:
- noVNC (браузер) для websockify - с использованием протокола WebSocket
- websockify to x11vnc (VNC-сервер) - прямое соединение через сокет 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 или нет.