Citrix Virtual Apps and Desktops

VDA 与 Delivery Controller 之间的 WebSocket 通信

本文介绍如何为 VDA 与 Delivery Controller 之间的通信设置 WebSocket 连接。

概述

WebSocket 协议基于 Citrix Brokering Protocol,可促进 Delivery Controller 与 VDA 之间的稳定通信。 使用 WebSocket 协议进行通信具有以下优势:

  • 只需要 TLS 端口 443 即可从 VDA 到 Delivery Controller 进行通信。
  • 在 VDA 与 Delivery Controller 之间提供无缝、可靠的通信渠道。

工作原理

以下部分介绍了 Delivery Controller 与 VDA 之间的 WebSocket 连接的工作流程:

  1. Citrix Virtual Apps and Desktops 管理员通过使用 Machine Creation Service (MCS) 预配 VDA 来启动该流程。
  2. 在 MCS 预配过程中,MCS 为每个 VDA 生成公私密钥对,并将公钥注册到 Delivery Controller 上的 FMA 信任服务。MCS 将公私密钥对保存为 VDA 上的身份磁盘下的一个文件。
  3. 当 VDA 计算机启动时,VDA 计算机上安装的 MCS 代理会从该身份磁盘中读取密钥对,并将此信息写入 VDA 注册表位置。
  4. VDA 上安装的 Broker 代理从注册表中读取密钥对,并使用由私钥签名的服务密钥对 Delivery Controller 生成启用了 SSL 的 WebSocket 请求。
  5. Delivery Controller 使用来自 FMA 信任服务的公钥验证已签名的服务密钥授权标头。
  6. 验证完成后,系统将建立 VDA 与 Delivery Controller 之间的 WebSocket 连接。

加入了 AD 的 VDA 对 WebSocket 的支持

开始之前的准备工作

  1. 配置您的站点。有关详细信息,请参阅创建站点
  2. 在 Delivery Controller 上安装 TLS 证书。有关详细信息,请参阅在 Controller 上安装 TLS 服务器证书
  3. 在 VDA 上安装根 CA 和中间 CA 以信任 Delivery Controller。

过程

请按照以下说明设置 WebSocket 连接:

  1. 在 Delivery Controller 上启用 WebSocket 连接。在您的站点上的每个 Delivery Controller 上运行以下命令:

    New-ItemProperty "HKLM:\SOFTWARE\Citrix\DesktopServer\WorkerProxy" -Name "WebSocket_Enabled" -PropertyType "DWord" -Value 1 -Force

    注意:

    请务必在启用 WebSocket 后重新启动 Delivery Controller。

  2. 使用 MCS 预配功能为加入了 AD 的 VDA 创建计算机目录。有关详细信息,请参阅创建计算机目录
  3. 创建一个交付组并将您的 VDA 添加到其中。有关详细信息,请参阅创建交付组
  4. 在 VDA 上启用 WebSocket 连接。请在 VDA 上运行以下命令:

    New-ItemProperty "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CitrixBrokerAgent\WebSocket" -Name "Enabled" -PropertyType "DWord" -Value 1 -Force
    <!--NeedCopy-->
    
    • 要检查 VDA 是否通过 WebSocket 连接到服务器,请检查以下注册表项值。

      注册表项:

       HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CitrixBrokerAgent\WebSocket
       <!--NeedCopy-->
      

      名称:Connected

      类型:REG_DWORD

      值:1 或 0

      1:VDA 使用 WebSocket 连接到服务器。

      0:VDA 无法通过 WebSocket 访问服务器,或者未启用 WebSocket。

    • 要检查 WebSocket 是否已启用,请检查以下注册表项值。Enabled 的值必须为 1。

      注册表项:

       HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CitrixBrokerAgent\WebSocket
       <!--NeedCopy-->
      

      名称:Enabled

      类型:REG_DWORD

      值:1

VDA 与 Delivery Controller 之间的 WebSocket 通信