Citrix Virtual Apps and Desktops

VDA 与 Delivery Controller 之间的 WebSocket 通信™

本文介绍了如何为 VDA 与 Delivery Controller 之间的通信设置 WebSocket 连接,作为使用 WCF 通信的替代方案。 它提供的优势是只有 TLS 端口 443 可用于从 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 连接。

当 LHC 模式激活时

如果启用了 LHC 的 Websocket 支持,则在 LHC 模式期间,当 VDA 尝试与 High Availability Service 建立 Websocket 连接时,High Availability Service 会使用来自本地数据库的公钥验证签名的服务密钥授权标头。 这将验证 Websocket 连接,并且即使在 LHC 模式下,VDA 与 Delivery Controller 之间的 WebSocket 连接也能成功。

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

  2. 启用 WebSocket 后重新启动 Broker Service。
  3. 启用 LHC 模式的 WebSocket 支持。 在您的站点上的每个 Delivery Controller 上运行以下命令:

      New-ItemProperty "HKLM:\SOFTWARE\Citrix\DesktopServer\LHC" -Name "WebSocketEnabledLhc" -PropertyType "DWord" -Value 1 -Force
    <!--NeedCopy-->
    
  4. 使用 MCS 预配功能为加入了 AD 的 VDA 创建计算机目录。 有关详细信息,请参阅创建计算机目录
  5. 创建一个交付组并将您的 VDA 添加到其中。 有关详细信息,请参阅创建交付组
  6. 在 VDA 上启用 WebSocket 连接。 在 VDA 上运行以下 PowerShell 命令:

      New-ItemProperty "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CitrixBrokerAgent\WebSocket" -Name "Enabled" -PropertyType "DWord" -Value 1 -Force
    <!--NeedCopy-->
    
    • 要检查 WebSocket 是否已启用,请检查以下注册表项值。 Enabled 的值必须为 1。

      注册表项:

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

      名称:Enabled

      类型:REG_DWORD

      值:1

VDA 与 Delivery Controller 之间的 WebSocket 通信™