在交付控制器上启用 TLS
默认情况下,HTTP 和 HTTPS 都已启用。HTTPS 使用服务器的 FQDN 作为公用名,该自签名证书不受 StoreFront™ 或 Web 浏览器的信任。
要在交付控制器™上启用 TLS,您必须:
-
在所有 Delivery Controller 上获取、安装并注册服务器证书。有关详细信息,请参阅 请求和安装证书。
-
使用 TLS 证书配置端口。有关详细信息,请参阅 安装证书。
- 为监视服务启用 HTTPS。
-
通过禁用 HTTP 来强制执行 HTTPS 流量。有关详细信息,请参阅 仅强制执行 HTTPS 流量。
- (可选)您可以更改 Controller 用于侦听 HTTP 和 HTTPS 流量的端口。有关详细信息,请参阅 更改 HTTP 或 HTTPS 端口。
证书的请求和安装过程
要使用 TLS,您必须安装一个证书,其公用名或主题备用名称与服务器的 FQDN 匹配。如果您在 delivery controller 前面使用负载均衡器,则将服务器和负载均衡器的 FQDN 都作为主题备用名称包含在内。有关详细信息,请参阅 证书。要使 StoreFront 连接到 delivery controller,您必须使用 RSA 数字签名算法。StoreFront 不支持使用 ECDSA 算法的证书。
配置 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替换为特定的 IP 地址和端口。 -
找到您之前安装的证书的指纹。要查看指纹,请打开管理计算机证书,浏览到该证书并将其打开,然后转到详细信息选项卡。
显示指纹的证书属性屏幕截图(/zh-cn/citrix-virtual-apps-desktops/2411/media/certificate-thumbprint.png)
或者,您可以使用 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--> -
在输出中找到 Citrix Broker Service 的标识号(全局唯一标识符)(例如,
{D333C884-187F-447C-8C67-463F33989C8F})。将此全局唯一标识符用于appid参数。
-
-
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 Gateway,以使其通过 HTTPS 而非 HTTP 连接到交付控制器。
配置监控服务 OData API 接口以支持 HTTPS
监视服务提供 OData v3 和 v4 API,允许 Citrix® 和第三方应用程序查询数据。Director 使用 OData API V3 连接到监视服务。要为 HTTPS 配置监视 OData API,请完成以下步骤:
-
请运行以下 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 <!--NeedCopy--> -
使用文本编辑器打开文件
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_ 密码套件之前。
- 使用 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 - 打开
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>
<!--NeedCopy-->
其中 <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-->