在交付控制器上启用 TLS
若要在交付控制器™上启用 TLS,您必须:
-
在所有 Delivery Controller 上获取、安装和注册服务器证书。有关详细信息,请参阅 请求和安装证书。
-
使用 TLS 证书配置端口。有关详细信息,请参阅 请求和安装证书。
-
通过禁用 HTTP 来强制执行 HTTPS 流量。有关详细信息,请参阅 仅强制执行 HTTPS 流量。
-
(可选)您可以更改 Controller 用于侦听 HTTP 和 HTTPS 流量的端口。有关详细信息,请参阅 更改 HTTP 或 HTTPS 端口。
证书的申请与安装过程
要使用 TLS,您必须安装一个证书,其备用名称包含 DDC 的 FQDN。您必须创建一个合适的证书。这可以使用 Microsoft 证书颁发机构或其他内部或外部证书颁发机构来完成。
使用 Microsoft 证书颁发机构创建证书
如果 Microsoft 证书颁发机构已集成到 Active Directory 域或 Delivery Controller 所加入的受信任林中,则可以从“证书 MMC 管理单元证书注册向导”获取证书。Microsoft 证书颁发机构需要发布适合 Web 服务器使用的证书模板。如果您在不同的域上使用 Citrix Gateway 或 StoreFront™ 服务器,则需要导出根证书颁发机构证书并将其导入 Citrix Gateway 和 StoreFront。
-
在 Delivery Controller 上,打开 MMC 控制台并添加“证书”管理单元。出现提示时,选择“计算机帐户”。
-
展开 个人 > 证书,然后使用 所有任务 > 请求新证书 上下文菜单命令。

-
单击 下一步 开始,然后单击 下一步 确认您正在从 Active Directory 注册获取证书。
-
选择一个合适的模板,例如 Web 服务器可导出。如果模板已设置为自动提供主题的值,则无需提供更多详细信息即可单击 注册。

-
要为证书模板提供更多详细信息,请单击“详细信息”箭头按钮并配置以下内容:
主题名称:选择“公用名”并添加交付控制器的 FQDN。
备用名称:选择“域名系统”并添加 Delivery Controller 的完全限定域名。

-
按“确定”。
-
按“注册”以创建并安装证书
安装已有的证书文件
如果您有作为文件的现有证书,则可以安装它:
-
在 Delivery Controller 上,打开 MMC 控制台并添加“证书”管理单元。出现提示时,选择“计算机帐户”。
-
展开“个人 > 证书”,然后使用“所有任务 > 导入”上下文菜单命令。
-
浏览并选择证书文件。
配置 SSL/TLS 侦听器端口
如果 IIS Windows 组件安装在同一服务器上(该组件作为 Web Studio 和 Director 的一部分安装),则可以使用 IIS 配置 TLS。有关详细信息,请参阅在 Web Studio 和 Director 上启用 TLS。否则,要使用 PowerShell 配置证书,请执行以下操作:
-
要检查是否存在已绑定的现有证书,请打开命令提示符并运行
netsh http show sslcert:netsh http show sslcert <!--NeedCopy--> -
如果存在现有绑定,则将其删除。
netsh http delete sslcert ipport=0.0.0.0:443 <!--NeedCopy-->如果现有绑定中指定了特定的 IP 地址和端口,则将其替换为
0.0.0.0:443。 -
查找您之前安装的证书的指纹。要查看指纹,请打开管理计算机证书,浏览到该证书并将其打开,然后转到详细信息选项卡。

或者,您可以使用 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-->如果存在具有指定友好名称的多个证书,则此操作将返回多个连接在一起的指纹,您必须选择适当的指纹。
-
要将证书绑定到端口,请使用
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:-
以管理员身份打开 PowerShell 命令窗口并运行以下命令:
Get-WmiObject -Class Win32_Product | Select-String -Pattern "broker" <!--NeedCopy--> -
Locate the IdentifyingNumber (GUID) for the Citrix Broker Service in the output (for example,
{D333C884-187F-447C-8C67-463F33989C8F}). Use this GUID for theappidparameter.
-
-
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_SHA384 或 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 密码套件(或两者);并且这些密码套件必须位于任何 TLS_DHE_ 密码套件之前。
- 使用 Microsoft 组策略编辑器,导航到 计算机配置 > 管理模板 > 网络 > SSL 配置设置。
- 编辑策略“SSL 密码套件顺序”。默认情况下,此策略设置为“未配置”。将此策略设置为“已启用”。
- 按正确顺序排列套件;删除任何您不想使用的密码套件套件。
确保 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 流量。
- 运行
regedit - Open HKLM\Software\Citrix\DesktopServer\
- 创建一个名为
XmlServicesEnableNonSsl的新 DWORD 值并将其设置为 0。 - 重新启动 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-->