在 Delivery Controllers 上启用 TLS

Last published : Nov 13, 2026
<<<<<<<< HEAD:zh-cn/citrix-virtual-apps-desktops/current-release/secure/tls-ddc.md 默认情况下,HTTP 和 HTTPS 均已启用。HTTPS 使用自签名证书,该证书使用服务器的 FQDN 作为公用名,StoreFront™ 或 Web 浏览器不信任该证书。
要在 delivery controller™ 上启用 TLS,您必须:
要在 delivery controller™ 上启用 TLS,您必须:
  • 在所有 Delivery Controllers 上获取、安装和注册服务器证书。有关详细信息,请参阅 请求和安装证书。

请求和安装证书

要使用 TLS,您必须安装一个证书,其公用名或主题备用名称与服务器的 FQDN 匹配。如果您在交付控制器前使用负载均衡器,则将服务器和负载均衡器的 FQDN 都包含为主题备用名称。有关详细信息,请参阅证书。StoreFront 要连接到交付控制器,您必须使用 RSA 数字签名算法。StoreFront 不支持使用 ECDSA 算法的证书。

配置 SSL/TLS 侦听器端口

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

请求和安装证书

要使用 TLS,您必须安装一个证书,其公用名或主题备用名称与服务器的 FQDN 匹配。如果您在 delivery controllers 前面使用负载均衡器,则将服务器和负载均衡器的 FQDN 都包含为主题备用名称。有关详细信息,请参阅 证书。要使 StoreFront 连接到 delivery controller,您必须使用 RSA 数字签名算法。StoreFront 不支持使用 ECDSA 算法的证书。

配置 SSL/TLS 侦听器端口

如果 IIS Windows 组件安装在同一服务器上(作为 Web Studio 和 Director 的一部分安装),则可以使用 IIS 配置 TLS。有关详细信息,请参阅 在 Web Studio 和 Director 上启用 TLS。否则,要使用 PowerShell 配置证书,请执行以下操作:
  1. 要检查是否存在已绑定的证书,请打开命令提示符并运行 netsh http show sslcert:
    netsh http show sslcert
  2. 如果存在现有绑定,请将其删除。
    netsh http delete sslcert ipport=0.0.0.0:443
    如果现有绑定中指定了特定的 IP 地址和端口,请将 0.0.0.0:443 替换为该 IP 地址和端口。
<<<<<<<< HEAD:zh-cn/citrix-virtual-apps-desktops/current-release/secure/tls-ddc.md
  1. 查找之前安装的证书的指纹。要查看指纹,请打开管理计算机证书,浏览到该证书并将其打开,然后转到详细信息选项卡。

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

<<<<<<<< HEAD:zh-cn/citrix-virtual-apps-desktops/current-release/secure/tls-ddc.md 一旦启用 HTTPS,请配置任何 和 NetScaler 网关以使用 HTTPS 而不是 HTTP 连接到交付控制器。

启用 HTTPS 后,请配置所有 StoreFront 部署 和 NetScaler Gateway 以使用 HTTPS 而非 HTTP 连接到交付控制器。

为 HTTPS 配置监视服务 OData API

监视服务提供 OData v3 和 v4 API,以允许 Citrix® 和第三方应用程序查询数据。Director 使用 OData API V3 连接到监视服务。要为 HTTPS 配置监视 OData API,请完成以下步骤:
  1. 运行以下 PowerShell:
    $serviceGroup = Get-ConfigRegisteredServiceInstance -ServiceType Monitor | Select -First 1 ServiceGroupUid
    Remove-ConfigServiceGroup -ServiceGroupUid $serviceGroup.ServiceGroupUid
    & 'C:\Program Files\Citrix\Monitor\Service\citrix.monitor.exe' -ConfigureFirewall -RequireODataTls –OdataPort 443 -RequireODataSdkTls –OdataSdkPort 443
    get-MonitorServiceInstance | register-ConfigServiceInstance
    Get-ConfigRegisteredServiceInstance -ServiceType Config | Reset-MonitorServiceGroupMembership
  2. 使用文本编辑器打开文件 C:\Program Files\Citrix\Monitor\Service\Citrix.Monitor.exe.Config。找到元素 <add key="owin:baseAddress" value="http://localhost/citrix/monitor/odata/v4" /> 并将其更改为 <add key="owin:baseAddress" value="https://localhost/citrix/monitor/odata/v4" />。

配置密码套件

密码套件顺序列表必须包含 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 或 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 密码套件(或两者);并且这些密码套件必须位于任何 TLS_DHE_ 密码套件之前。
  1. 使用 Microsoft 组策略编辑器,浏览到 计算机配置 > 管理模板 > 网络 > SSL 配置设置。
  2. 编辑策略“SSL 密码套件顺序”。默认情况下,此策略设置为“未配置”。将此策略设置为“已启用”。
  3. 按正确顺序排列套件。删除所有不想使用的密码套件。
确保 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 或 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 位于任何 TLS_DHE_ 密码套件之前。
在 Microsoft Learn 上,另请参阅 配置 TLS 密码套件顺序。

仅强制执行 HTTPS 流量

建议您将 XML Service 配置为忽略 HTTP 流量。
  1. 运行 regedit
  2. 打开 HKLM\Software\Citrix\DesktopServer\ <<<<<<<< HEAD:zh-cn/citrix-virtual-apps-desktops/current-release/secure/tls-ddc.md
  3. 创建一个名为 XmlServicesEnableNonSsl 的新 DWORD 值,并将其设置为 0。
  4. 重新启动 Broker 服务。
您可以创建一个相应的注册表 DWORD 值 XmlServicesEnableSsl 以忽略 HTTPS 流量。确保它未设置为 0。

更改 HTTP 或 HTTPS 端口

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

  1. 创建名为 XmlServicesEnableNonSsl 的新 DWORD 值,并将其设置为 0。
  2. 重新启动 Broker Service。
您可以创建相应的注册表 DWORD 值 XmlServicesEnableSsl 以忽略 HTTPS 流量。确保其未设置为 0。

更改 HTTP 或 HTTPS 端口

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