在通用打印服务器上启用 TLS
虚拟投递代理 (VDA) 与通用打印服务器之间的基于 TCP 的连接支持传输层安全 (TLS) 协议。
警告:
对于涉及 Windows 注册表操作的任务(例如编辑注册表),不正确地编辑注册表可能会导致严重问题,甚至可能需要重新安装操作系统。Citrix® 无法保证能够解决因不正确使用注册表编辑器而导致的问题。请自行承担使用注册表编辑器的风险。在编辑注册表之前,请务必备份注册表。
VDA 与通用打印服务器之间的打印连接类型
未加密的连接
以下与打印相关的连接源自 VDA 并连接到通用打印服务器上的端口。仅当 SSL enabled 策略设置为 Disabled(默认值)时,才会建立这些连接。
- 明文打印 Web 服务连接(TCP 端口 8080)
- 明文打印数据流 (CGP) 连接(TCP 端口 7229)
Microsoft 支持文章 Windows 的服务概述和网络端口要求 介绍了 Microsoft Windows 打印后台处理程序服务使用的端口。本文档中的 SSL/TLS 设置不适用于 Windows 打印后台处理程序服务建立的 NetBIOS 和 RPC 连接。如果 通用打印服务器启用 策略设置配置为 启用并回退到 Windows 的本机远程打印,则 VDA 会使用 Windows 网络打印提供程序 (win32spl.dll) 作为回退。

加密连接方式
这些与打印相关的 SSL/TLS 连接源自 VDA 并连接到通用打印服务器上的端口。仅当 SSL enabled 策略设置为 Enabled 时,才会建立这些连接。
- 加密打印 Web 服务连接(TCP 端口 8443)
- 加密打印数据流 (CGP) 连接(TCP 端口 443)

SSL/TLS 客户端配置
VDA 作为 SSL/TLS 客户端运行。
使用微软组策略和注册表配置 Microsoft SCHANNEL SSP,以实现加密的打印 Web 服务连接(TCP 端口 8443)。微软支持文章 TLS 注册表设置 描述了 Microsoft SCHANNEL SSP 的注册表设置。
在 VDA 上使用组策略编辑器,转到 计算机配置 > 管理模板 > 网络 > SSL 配置设置 > SSL 密码套件顺序。当设置 TLS 1.3 时,选择以下顺序:
TLS_AES_256_GCM_SHA384 TLS_AES_128_GCM_SHA256
当设置 TLS 1.2 时,选择以下顺序:
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384_P384 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384_P256 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256
注意:
配置此组策略设置后,VDA 仅当连接同时出现在以下两个 SSL 密码套件列表中时,才会为加密的打印 Web 服务连接(默认端口:8443)选择一个密码套件:
- 组策略 SSL 密码套件顺序列表
- 与所选的 SSL 密码套件策略设置(COM、GOV 或 ALL)对应的列表
此组策略配置还会影响 VDA 上的其他 TLS 应用程序和服务。如果您的应用程序需要特定的密码套件,您可能需要将它们添加到此组策略密码套件顺序列表中。
重要提示:
TLS 配置的组策略更改仅在操作系统重新启动后生效。
使用 Citrix 策略配置加密打印数据流 (CGP) 连接(TCP 端口 443)的 SSL/TLS 设置。
SSL/TLS 服务器配置
通用打印服务器用作 SSL/TLS 服务器。
利用 Enable-UpsSsl.ps1 PowerShell 脚本来完成 SSL/TLS 设置的配置。
在通用打印服务器上安装 TLS 证书
对于 HTTPS,您必须在通用打印服务器上安装一个受 VDA 信任的 SSL 服务器证书。使用 Microsoft Active Directory 证书服务或其他证书颁发机构为通用打印服务器请求证书。
使用 Microsoft Active Directory 证书服务注册/请求证书时,请记住以下注意事项:
- 将证书放置在本地计算机的“个人”证书存储中。
- 将证书主题可分辨名称 (Subject DN) 的“公用名”属性设置为 Universal Print Server 的完全限定域名 (FQDN)。在证书模板中指定此项。
- 将用于生成证书请求和私钥的加密服务提供程序 (CSP) 设置为“Microsoft 增强型 RSA 和 AES 加密提供程序 (加密)”。在证书模板中指定此项。
- 将密钥大小设置为至少 2048 位。在证书模板中指定此项。
有关创建和安装证书的详细信息,请参阅管理证书。
在通用打印服务器上配置 SSL
Universal Print Server 上的 XTE 服务侦听传入连接。启用 SSL 后,它将充当 SSL 服务器。传入连接有两种类型:包含打印命令的打印 Web 服务连接,以及包含打印作业的打印数据流连接。可以在这些连接上启用 SSL。SSL 保护这些连接的机密性和完整性。默认情况下,SSL 处于禁用状态。
用于配置 SSL 的 PowerShell 脚本位于安装介质上,文件名为:\Support\Tools\SslSupport\Enable-UpsSsl.ps1.
在通用打印服务器上配置侦听端口号
以下是 XTE 服务的默认端口:
- 明文打印 Web 服务 (HTTP) TCP 端口:8080
- 明文打印数据流 (CGP) TCP 端口:7229
- 加密打印 Web 服务 (HTTPS) TCP 端口:8443
- 加密打印数据流 (CGP) TCP 端口:443
要更改通用打印服务器上 XTE 服务使用的端口,请以管理员身份在 PowerShell 中运行以下命令(有关 Enable-UpsSsl.ps1 PowerShell 脚本用法的说明,请参阅后面的部分):
Stop-Service CitrixXTEServer, UpSvc-
Enable-UpsSsl.ps1 -Enable -HTTPSPort <port> -CGPSSLPort <port>或Enable-UpsSsl.ps1 -Disable -HTTPPort <port> -CGPPort <port> Start-Service CitrixXTEServer
通用打印服务器上的 TLS 设置
如果您在负载平衡配置中拥有多个通用打印服务器,请确保所有通用打印服务器上的 TLS 设置配置一致。
在通用打印服务器上配置 TLS 时,将更改已安装 TLS 证书的权限,从而授予通用打印服务对证书私钥的读取访问权限,并通知通用打印服务以下信息:
- 证书存储中用于 TLS 的证书。
- 用于 TLS 连接的 TCP 端口号。
Windows 防火墙(如果已启用)必须配置为允许这些 TCP 端口上的入站连接。当您使用 Enable-UpsSsl.ps1 PowerShell 脚本时,此配置会自动完成。
- 允许哪些版本的 TLS 协议。
Universal Print Server 支持 TLS 协议版本 1.3 和 1.2。指定允许的最低版本。
默认的 TLS 协议版本是 1.2。
注意:
从 Citrix 虚拟应用和桌面 2311 版本开始,不再支持 TLS 1.1 和 1.0。
- 允许哪些 TLS 密码套件。
密码套件选择用于连接的加密算法。VDA 和 Universal Print Server 可以支持不同的密码套件集。当 VDA 连接并发送支持的 TLS 密码套件列表时,Universal Print Server 会将客户端的某个密码套件与其自身配置的密码套件列表中的某个密码套件进行匹配,并接受连接。如果没有匹配的密码套件,Universal Print Server 将拒绝连接。
Universal Print Server 支持以下密码套件集,它们分别命名为 GOV(政府)、COM(商业)和 ALL,适用于 OPEN、FIPS 和 SP800-52 本机加密工具包模式。可接受的密码套件还取决于 SSL FIPS 模式策略设置和 Windows FIPS 模式。有关 Windows FIPS 模式的信息,请参阅此Microsoft 支持文章。
| 密码套件(按优先级降序排列) | 全部开放 | 开放商业版 | 开放政府版 | FIPS 所有合规性 | FIPS 商业版 | FIPS 政府模式 | SP800-52 全部 | SP800-52 商业 | SP800-52 政府 |
|---|---|---|---|---|---|---|---|---|---|
| TLS_ECDHE_RSA_ AES256_GCM_SHA384 | X | X | X | X | X | X | |||
| TLS_ECDHE_RSA_ AES256_CBC_SHA384 | X | X | X | X | X | X | |||
| TLS_ECDHE_RSA_ AES256_CBC_SHA | X | X | X | X | X | X |
使用 PowerShell 脚本在通用打印服务器上配置 TLS
在证书存储的 本地计算机 > 个人 > 证书 区域中安装 TLS 证书。如果该位置存在多个证书,请将证书指纹提供给 Enable-UpsSsl.ps1 PowerShell 脚本。
注意:
PowerShell 脚本根据通用打印服务器的 FQDN 查找正确的证书。当通用打印服务器 FQDN 只有一个证书时,您无需提供证书指纹。
Enable-UpsSsl.ps1 脚本启用或禁用从 VDA 到通用打印服务器的 TLS 连接。此脚本位于安装介质的 Support > Tools > SslSupport 文件夹中。
当您启用 TLS 时,脚本会禁用通用打印服务器 TCP 端口的所有现有 Windows 防火墙规则。然后,它会添加新规则,允许 XTE 服务仅在 TLS TCP 和 UDP 端口上接受传入连接。它还会禁用以下 Windows 防火墙规则:
- 明文打印 Web 服务连接(默认:8080)
- 明文打印数据流 (CGP) 连接(默认:7229)
其效果是 VDA 只能在使用 TLS 时建立这些连接。
注意:
启用 TLS 不会影响源自 VDA 并指向通用打印服务器的 Windows 打印后台处理程序 RPC/SMB 连接。
重要提示:
将 Enable 或 Disable 指定为第一个参数。如果本地计算机个人证书存储中只有一个证书具有通用打印服务器的 FQDN,则 CertificateThumbprint 参数是可选的。其他参数是可选的。
语法
Enable-UpsSSL.ps1 -Enable [-HTTPPort <port>] [-CGPPort <port>] [–HTTPSPort <port>] [-CGPSSLPort <port>] [-SSLMinVersion <version>] [-SSLCipherSuite <name>] [-CertificateThumbprint <thumbprint>] [-FIPSMode <Boolean>] [-ComplianceMode <mode>]
Enable-UpsSSL.ps1 -Disable [-HTTPPort <portnum>] [-CGPPort <portnum>]
| 参数名称 | 说明内容 |
|---|---|
| 启用 | 在 XTE 服务器上启用 SSL/TLS。此参数或 Disable 参数是必需的。 |
| 禁用 | 在 XTE 服务器上禁用 SSL/TLS。此参数或 Enable 参数是必需的。 |
证书指纹 "<thumbprint>"
|
本地计算机个人证书存储中 TLS 证书的指纹,用引号括起来。脚本使用指定的指纹来选择您要使用的证书。 |
HTTP协议端口 <port>
|
明文打印 Web 服务 (HTTP/SOAP) 端口。默认值: 8080 |
CGP协议端口 <port>
|
明文打印数据流 (CGP) 端口。默认值: 7229 |
HTTPS 端口设置 <port>
|
加密打印 Web 服务 (HTTPS/SOAP) 端口。默认值: 8443 |
CGPSSLPort <port>
|
加密打印数据流 (CGP) 端口。默认值: 443 |
SSL最低版本 "<version>"
|
最低 TLS 协议版本,用引号括起来。有效值:“TLS_1.2”和“TLS_1.3”。默认值: TLS_1.2。 |
SSL密码套件 "<name>"
|
TLS 密码套件包的名称,用引号括起来。有效值:“GOV”、“COM”和“ALL”(默认值)。 |
FIPS 合规模式 <Boolean>
|
在XTE服务器中启用或禁用FIPS 140模式。有效值:$true 启用FIPS 140模式,$false 禁用FIPS 140模式。 |
示例
以下脚本启用TLS。指纹(在此示例中表示为“12345678987654321”)用于选择要使用的证书。
Enable-UpsSsl.ps1 –Enable -CertificateThumbprint "12345678987654321"
以下脚本禁用TLS。
Enable-UpsSsl.ps1 –Disable
配置FIPS模式
启用美国联邦信息处理标准 (FIPS) 模式可确保仅将符合FIPS 140标准的加密用于Universal Print Server加密连接。
在客户端上配置FIPS模式之前,请先在服务器上配置FIPS模式。
有关启用/禁用Windows FIPS模式的信息,请查阅Microsoft的文档站点。
在客户端上启用FIPS模式
在 交付控制器™ 上,运行 Web Studio 并将 UPS FIPS 模式 Citrix 策略设置设为 已启用。启用 Citrix 策略。
在每个VDA上执行以下操作:
- 启用 Windows 操作系统 FIPS 模式。
- 重新启动VDA。
在服务器上启用 FIPS 模式
在每个通用打印服务器上执行此操作:
- 启用 Windows 操作系统 FIPS 模式。
- 以管理员身份运行此 PowerShell 命令:
stop-service CitrixXTEServer, UpSvc - 使用
-Enable -FIPSMode $true参数运行Enable-UpsSsl.ps1脚本。 - 重新启动通用打印服务器。
在客户端上禁用 FIPS 模式
在 Web Studio 中,将 UPS FIPS 模式 Citrix 策略设置设为禁用。启用 Citrix 策略。您还可以删除 UPS FIPS 模式 Citrix 策略设置。
在每个 VDA 上执行以下操作:
- 禁用 Windows 系统中的 FIPS 模式。
- 重新启动 VDA。
在服务器上禁用 FIPS 模式
在每个通用打印服务器上执行以下操作:
- 禁用 视窗 FIPS 模式。
- 以管理员身份运行此 PowerShell 命令:
stop-service CitrixXTEServer, UpSvc - 运行
Enable-UpsSsl.ps1脚本,并带上-Enable -FIPSMode $false参数。 - 重新启动通用打印服务器。
注意:
当 SSL 协议版本设置为 TLS 1.3 时,不支持 FIPS 模式。
配置 SSL/TLS 协议版本
默认的 SSL/TLS 协议版本是 TLS 1.2。TLS 1.2 和 TLS 1.3 是生产环境中推荐的 SSL/TLS 协议版本。为了进行故障排除,可能需要在非生产环境中临时更改 SSL/TLS 协议版本。
通用打印服务器不支持 SSL 2.0 和 SSL 3.0。
在服务器上设置 SSL/TLS 协议版本
在每个通用打印服务器上执行以下操作:
- 以管理员身份运行此 PowerShell 命令:
stop-service CitrixXTEServer, UpSvc - 运行
Enable-UpsSsl.ps1脚本,并带上-Enable -SSLMinVersion版本参数。请记住,测试完成后将其设置回 TLS 1.2 或 TLS 1.3。 - 重新启动通用打印服务器。
在客户端上设置 SSL/TLS 协议版本
在 Studio 中,将 SSL 协议版本策略设置设为所需的协议版本并启用该策略。
确保 虚拟桌面代理 的操作系统支持所选的 TLS 版本。有关 视窗 上支持的 TLS 版本,请参阅 [微软学习 - 传输层安全协议版本支持}(https://learn.microsoft.com/zh-cn/windows-server/security/tls/tls-registry-settings?tabs=diffie-hellman#tls-dtls-and-ssl-protocol-version-settings)。要配置注册表以覆盖默认设置,请参阅 微软学习 - 传输层安全、数据报传输层安全和安全套接字层协议版本设置。
故障排除
如果发生连接错误,请检查通用打印服务器上的 C:\Program Files (x86)\Citrix\XTE\logs\error.log 日志文件。
如果 SSL/TLS 握手失败,此日志文件中将显示错误消息 SSL handshake from client failed。如果 VDA 和通用打印服务器上的 SSL/TLS 协议版本不匹配,则可能会出现此类故障。
在以下包含通用打印服务器主机名的策略设置中使用通用打印服务器 FQDN:
- 会话打印机
- 打印机分配
- 用于负载平衡的通用打印服务器
确保通用打印服务器和 VDA 上的系统时钟(日期、时间和时区)正确。