在交付控制器上启用 TLS

若要在交付控制器™上启用 TLS,您必须:

证书的申请与安装过程

要使用 TLS,您必须安装一个证书,其备用名称包含 DDC 的 FQDN。您必须创建一个合适的证书。这可以使用 Microsoft 证书颁发机构或其他内部或外部证书颁发机构来完成。

使用 Microsoft 证书颁发机构创建证书

如果 Microsoft 证书颁发机构已集成到 Active Directory 域或 Delivery Controller 所加入的受信任林中,则可以从“证书 MMC 管理单元证书注册向导”获取证书。Microsoft 证书颁发机构需要发布适合 Web 服务器使用的证书模板。如果您在不同的域上使用 Citrix Gateway 或 StoreFront™ 服务器,则需要导出根证书颁发机构证书并将其导入 Citrix Gateway 和 StoreFront。

  1. 在 Delivery Controller 上,打开 MMC 控制台并添加“证书”管理单元。出现提示时,选择“计算机帐户”。

  2. 展开 个人 > 证书,然后使用 所有任务 > 请求新证书 上下文菜单命令。

    MMC 证书管理单元

  3. 单击 下一步 开始,然后单击 下一步 确认您正在从 Active Directory 注册获取证书。

  4. 选择一个合适的模板,例如 Web 服务器可导出。如果模板已设置为自动提供主题的值,则无需提供更多详细信息即可单击 注册

    请求证书对话框

  5. 要为证书模板提供更多详细信息,请单击“详细信息”箭头按钮并配置以下内容:

    主题名称:选择“公用名”并添加交付控制器的 FQDN。

    备用名称:选择“域名系统”并添加 Delivery Controller 的完全限定域名。

    证书属性

  6. 按“确定”。

  7. 按“注册”以创建并安装证书

安装已有的证书文件

如果您有作为文件的现有证书,则可以安装它:

  1. 在 Delivery Controller 上,打开 MMC 控制台并添加“证书”管理单元。出现提示时,选择“计算机帐户”。

  2. 展开“个人 > 证书”,然后使用“所有任务 > 导入”上下文菜单命令。

  3. 浏览并选择证书文件。

配置 SSL/TLS 侦听器端口

如果 IIS Windows 组件安装在同一服务器上(该组件作为 Web Studio 和 Director 的一部分安装),则可以使用 IIS 配置 TLS。有关详细信息,请参阅在 Web Studio 和 Director 上启用 TLS。否则,要使用 PowerShell 配置证书,请执行以下操作:

  1. 要检查是否存在已绑定的现有证书,请打开命令提示符并运行 netsh http show sslcert

    netsh http show sslcert
    <!--NeedCopy-->
    
  2. 如果存在现有绑定,则将其删除。

    netsh http delete sslcert ipport=0.0.0.0:443
    <!--NeedCopy-->
    

    如果现有绑定中指定了特定的 IP 地址和端口,则将其替换为 0.0.0.0:443

  3. 查找您之前安装的证书的指纹。要查看指纹,请打开管理计算机证书,浏览到该证书并将其打开,然后转到详细信息选项卡。

    显示指纹的证书属性屏幕截图

    或者,您可以使用 PowerShell。例如,以下脚本查找其公用名与服务器主机名匹配的证书并打印缩略图:

    $HostName = ([System.Net.Dns]::GetHostByName(($env:computerName))).Hostname
    $Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.Subject -match ("CN=" + $HostName)}).Thumbprint -join ';'
    Write-Host -Object "Certificate Thumbprint for $($HostName): $($Thumbprint)" -Foreground Yellow
    <!--NeedCopy-->
    

    如果证书公用名与主机名不匹配,则此操作将失败。如果主机名有多个证书,则此操作将返回多个连接在一起的指纹,您必须选择适当的指纹。

    以下示例展示了如何通过友好名称查找证书:

    $friendlyName = "My certificate name"
    $Thumbprint = (Get-ChildItem -Path Cert:\LocalMachine\My | Where-Object {$_.FriendlyName -eq $friendlyNam}).Thumbprint -join ';'
    Write-Host -Object "Certificate Thumbprint for $friendlyName: $($Thumbprint)" -Foreground Yellow
    <!--NeedCopy-->
    

    如果存在具有指定友好名称的多个证书,则此操作将返回多个连接在一起的指纹,您必须选择适当的指纹。

  4. 要将证书绑定到端口,请使用 netsh http add sslcert 命令:

    netsh http add sslcert ipport=[IP address]:443 certhash=[certificate hash] appid=[application GUID] disablelegacytls=enable
    <!--NeedCopy-->
    
    • ipport:IP 地址和端口。使用 0.0.0.0:443 将此设置应用于所有 IP 地址。您可以改为指定特定的 IP 地址。

    • certhash:您在上一步中确定的证书指纹。

    • appid:Citrix 代理服务 的全局唯一标识符。

      注意:

      续订证书或重新绑定时,请使用与 Broker Service 关联的特定 appid,而不是任意 GUID。

      要查找 Citrix 代理服务 的正确 appid

      1. 以管理员身份打开 PowerShell 命令窗口并运行以下命令:

         Get-WmiObject -Class Win32_Product | Select-String -Pattern "broker"
         <!--NeedCopy-->
        
      2. Locate the IdentifyingNumber (GUID) for the Citrix Broker Service in the output (for example, {D333C884-187F-447C-8C67-463F33989C8F}). Use this GUID for the appid parameter.

    • disablelegacytls=enable:禁用旧版 TLS。此参数在 Windows 2022 及更高版本上可用。在 Windows 2022 上,它会禁用 TLS 1.0 和 1.1。在 Windows 2025 上,这没有必要,因为 TLS 1.0 和 1.1 默认是禁用的。

    例如,运行以下命令将指纹为 bc96f958848639fd101a793b87915d5f2829b0b6 的证书绑定到所有 IP 地址上的端口 443

    netsh http add sslcert ipport=0.0.0.0:443 certhash=bc96f958848639fd101a793b87915d5f2829b0b6 appid={91fe7386-e0c2-471b-a252-1e0a805febac} disablelegacytls=enable
    <!--NeedCopy-->
    

启用 HTTPS 后,您应配置任何 StoreFront 部署 和 Netscaler 网关,以使用 HTTPS 而非 HTTP 连接到交付控制器。

配置密码套件

密码套件顺序列表必须包含 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 密码套件(或两者);并且这些密码套件必须位于任何 TLS_DHE_ 密码套件之前。

  1. 使用 Microsoft 组策略编辑器,导航到 计算机配置 > 管理模板 > 网络 > SSL 配置设置
  2. 编辑策略“SSL 密码套件顺序”。默认情况下,此策略设置为“未配置”。将此策略设置为“已启用”。
  3. 按正确顺序排列套件;删除任何您不想使用的密码套件套件。

确保 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 位于任何 TLS_DHE_ 密码套件之前。

在 Microsoft Learn 上,另请参阅 配置 TLS 密码套件顺序

仅强制执行 HTTPS 流量

建议您将 XML Service 配置为忽略 HTTP 流量。

  1. 运行 regedit
  2. Open HKLM\Software\Citrix\DesktopServer\
  3. 创建一个名为 XmlServicesEnableNonSsl 的新 DWORD 值并将其设置为 0。
  4. 重新启动 Broker 服务。

有一个对应的注册表 DWORD 值 XmlServicesEnableSsl,您可以创建它来忽略 HTTPS 流量。请确保它未设置为 0。

更改 HTTP 或 HTTPS 端口设置

默认情况下,Controller 上的 XML Service 侦听端口 80 用于 HTTP 流量,端口 443 用于 HTTPS 流量。尽管您可以使用非默认端口,但请注意将 Controller 暴露给不受信任网络的安全风险。部署独立的 StoreFront 服务器优于更改默认设置。

要更改 Controller 使用的默认 HTTP 或 HTTPS 端口,请从 Studio 运行以下命令:

BrokerService.exe -StoreFrontPort <http-port> -StoreFrontTlsPort <https-port>

其中 <http-port> 是 HTTP 流量的端口号,<https-port> 是 HTTPS 流量的端口号。

注意:

更改端口后,Studio 可能会显示有关许可证兼容性和升级的消息。要解决此问题,请使用以下 PowerShell cmdlet 序列重新注册服务实例:

Get-ConfigRegisteredServiceInstance -ServiceType Broker -Binding XML_HTTPS |
Unregister-ConfigRegisteredServiceInstance
Get-BrokerServiceInstance | where Binding -eq "XML_HTTPS" |
Register-ConfigServiceInstance
<!--NeedCopy-->
在交付控制器上启用 TLS