5

x11vnc (VNC サーバー) とnoVNC (VNC クライアント)で SSL 接続を使用しようとしています。接続しようとすると、noVNC から「Unsupported Security Types: 19,18」というエラーが表示され、「SSL: ssl_helper[2957]: exit case 2 (ssl_init failed) SSL: accept_openssl: cookie from ssl_helper[2957] FAILED. 0」が表示されます。 " x11vnc から。x11vnc の SSL をオフにすると、クライアントは問題なく接続できます。

x11vnc には、Java ベースのアプレット ビューアが同梱されていることを認識しています。しかし、私は 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 を指しています。--ssl-only などのオプションを追加するために、noVNC の launch.sh の代わりに websockify を使用します。

noVNC の暗号化オプションは、サーバーへの接続に影響を与えないようです (オンでもオフでも結果は同じです)。

安全な接続が最も心配です。現時点では、x11vnc の SSL をオフにする必要がある場合、noVNC の暗号化オプションをオンにしてもあまり効果がないようです (暗号化オプションにより、noVNC は ws:// の代わりに wss:// を使用します)。これで安全な接続が確立される場合は、お知らせください。それ以外の場合、noVNC と x11vnc を SSL で動作させるにはどうすればよいですか?

4

1 に答える 1

14

最初にいくつかの説明:

noVNC と websockify は、実際には別のプロジェクトです。

  • websockifyは、WebSocket 接続 (ブラウザーなどから) が生の TCP ソケット サービス (VNC サーバーなど) に接続できるようにする汎用プロキシ/ブリッジです。
  • noVNCは HTML5 VNC クライアントです。

VNC サーバーが WebSocket 接続をサポートしている場合、websockify は必要ありません。現在 WebSocket の直接接続をサポートしている唯一の VNC サーバーは、この libvncserver のフォークです。ほとんどの VNC サーバーはまだ WebSocket クライアントをサポートしていないため、websockify は noVNC に含まれていますが、websockify は別のプロジェクトです。

それぞれ別の暗号化オプションを持つ 2 つの異なるネットワーク接続を扱っています。

  1. noVNC (ブラウザ) から websockify - WebSocket プロトコルを使用
  2. x11vnc (VNC サーバー) への websockify - 直接 TCP ソケット接続

WebSocket プロトコルは、暗号化されていない接続 (ws://) と SSL/TLS 暗号化された接続 (wss://) をサポートしています。

VNC で使用される RFB プロトコル (リモート フレーム バッファー) には、暗号化された接続を使用するように初期化中にアップグレードする機能があります。TLS (セキュリティ タイプ 18)、VeNCrypt (セキュリティ タイプ 19) など、いくつかの暗号化方式がサポートされています。

今あなたの質問に

-ssl PEMx11vncに渡すと、RFB/VNC 暗号化が有効になります。noVNC は RFB/VNC 暗号化をサポートしていません。Javascript は、noVNC で使用できるほど高速に暗号化/復号化を実行できるほど高速ではありません。noVNC がこのタイプの暗号化をサポートできるようにする暗号化 API を Javascript に追加することについて、いくつかの議論があります。

noVNC で暗号化を有効にすると、WebSocket 暗号化 (wss://) が有効になります。これにより、ブラウザと websockify の間の接続が暗号化されます。websockify と VNC サーバー間の接続が信頼できるネットワーク (たとえば、同じサーバー上で両方を実行している) を介しており、noVNC で WebSocket 暗号化を使用している限り、暗号化されていないデータが公開されることはありません。ただし、ブラウザと同じシステムで websockify を実行し、VNC サーバーがリモートである場合、クライアントからサーバー システムへの VNC トラフィックは暗号化されません (noVNC が将来 RFB/VNC VeNCrypt 暗号化サポートを取得しない限り)。

websockify からの出力は、WebSocket 接続が暗号化されているか暗号化されていないかを示します。

于 2011-06-18T19:59:36.467 に答える