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

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

SSL/TLS 客户端配置
VDA 充当 SSL/TLS 客户端的角色。
使用微软组策略和注册表配置微软 SCHANNEL SSP,以用于加密的打印 Web 服务连接(TCP 端口 8443)。微软支持文章 TLS 注册表设置 介绍了微软 SCHANNEL SSP 的注册表设置。
在 VDA(Windows Server 2016 或 Windows 10)上使用组策略编辑器,导航到 计算机配置 > 管理模板 > 网络 > SSL 配置设置 > SSL 密码套件顺序。选择以下顺序:
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 服务器。
Use the Enable-UpsSsl.ps1 PowerShell script to configure SSL/TLS settings.
在通用打印服务器上安装 TLS 服务器证书
对于 HTTPS,通用打印服务器通过使用服务器证书支持 TLS 功能。不使用客户端证书。使用 Microsoft Active Directory 证书服务或其他证书颁发机构请求通用打印服务器的证书。
在使用 Microsoft Active Directory 证书服务注册/请求证书时,请记住以下注意事项:
- 将证书放置在本地计算机的 个人 证书存储区中。
- 将证书主题可分辨名称 (Subject DN) 的 公用名 属性设置为通用打印服务器的完全限定域名 (FQDN)。在证书模板中指定此项。
- 将用于生成证书请求和私钥的加密服务提供程序 (CSP) 设置为 Microsoft 增强型 RSA 和 AES 加密提供程序(加密)。在证书模板中指定此项。
- 将密钥大小设置为至少 2048 位。在证书模板中指定此项。
在通用打印服务器上配置 SSL
通用打印服务器上的 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 协议版本。
通用打印服务器支持 TLS 协议版本 1.2、1.1 和 1.0。指定允许的最低版本。
默认 TLS 协议版本为 1.2。
- 允许哪些 TLS 密码套件。
密码套件选择用于连接的加密算法。VDA 和 Universal Print Server 可以支持不同的密码套件集。当 VDA 连接并发送支持的 TLS 密码套件列表时,Universal Print Server 会将客户端的某个密码套件与其自身配置的密码套件列表中的某个密码套件进行匹配,并接受连接。如果没有匹配的密码套件,Universal Print Server 将拒绝连接。
Universal Print Server 支持以下密码套件集,这些套件集在 OPEN、FIPS 和 SP800-52 本机加密工具包模式下分别命名为 GOV(政府)、COM(商业)和 ALL。可接受的密码套件还取决于 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 |
CGPSSL 端口号设置 <port>
|
加密打印数据流 (CGP) 端口。默认值:443 |
SSL 最低版本 "<version>"
|
最低 TLS 协议版本,用引号括起来。有效值:“TLS_1.0”、“TLS_1.1”和“TLS_1.2”。默认值: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 标准的加密技术。
在客户端上配置 FIPS 模式之前,请先在服务器上配置 FIPS 模式。
有关启用/禁用 Windows FIPS 模式的信息,请查阅 Microsoft 的文档站点。
在客户端上启用 FIPS 模式
在 交付控制器™ 上,运行 Citrix Studio 并将 SSL FIPS 模式 Citrix 策略设置设为已启用。启用 Citrix 策略。
在每个 VDA 上执行以下操作:
- 启用 Windows 操作系统 FIPS 模式。
- 重新启动 VDA。
在服务器上启用 FIPS 模式
在每个通用打印服务器上执行以下操作:
- 启用 视窗 FIPS 模式。
- 以管理员身份运行此 PowerShell 命令:
stop-service CitrixXTEServer, UpSvc - 使用
-Enable -FIPSMode $true参数运行Enable-UpsSsl.ps1脚本。 - 重新启动通用打印服务器。
在客户端禁用 FIPS 模式
在交付控制器上,运行 Citrix Studio 并将 SSL FIPS 模式 Citrix 策略设置设为已禁用。启用 Citrix 策略。您也可以删除 SSL FIPS 模式 Citrix 策略设置。
在每个 VDA 上执行以下操作:
- 禁用 视窗 FIPS 模式。
- 重新启动 VDA。
在服务器上禁用 FIPS 模式
在每个通用打印服务器上执行以下操作:
- 禁用 视窗 FIPS 模式。
- 以管理员身份运行此 PowerShell 命令:
stop-service CitrixXTEServer, UpSvc - 使用
-Enable -FIPSMode $false参数运行Enable-UpsSsl.ps1脚本。 - 重新启动通用打印服务器。
配置 SSL/TLS 协议版本
默认的 SSL/TLS 协议版本是 TLS 1.2。TLS 1.2 是唯一推荐用于生产环境的 SSL/TLS 协议版本。为了进行故障排除,可能需要在非生产环境中临时更改 SSL/TLS 协议版本。
通用打印服务器不支持 SSL 2.0 和 SSL 3.0。
在服务器上设置 SSL/TLS 协议版本
在每台通用打印服务器上执行以下操作:
- 以管理员身份运行此 PowerShell 命令:
stop-service CitrixXTEServer, UpSvc - 使用
-Enable -SSLMinVersion版本参数运行Enable-UpsSsl.ps1脚本。请记住,测试完成后将其设置回 TLS 1.2。 - 重新启动通用打印服务器。
在客户端上设置 SSL/TLS 协议版本
在每台 VDA 上执行以下操作:
-
在交付控制器上,将 SSL 协议版本 策略设置设置为所需的协议版本并启用该策略。
-
Microsoft 支持文章 TLS 注册表设置 介绍了 Microsoft SCHANNEL SSP 的注册表设置。使用注册表设置启用客户端 TLS 1.0、TLS 1.1 或 TLS 1.2。
重要提示:
请务必在测试完成后,将注册表设置恢复到其原始值。
-
重新启动 VDA。
故障排除
如果发生连接错误,请检查通用打印服务器上的 C:\Program Files (x86)\Citrix\XTE\logs\error.log 日志文件。
如果 SSL/TLS 握手失败,此日志文件中将显示错误消息 客户端 SSL 握手失败。如果 VDA 和 Universal Print Server 上的 SSL/TLS 协议版本不匹配,则可能会发生此类故障。
在包含通用打印服务器主机名的以下策略设置中使用通用打印服务器 FQDN:
- 会话打印机
- 打印机分配
- 用于负载平衡的通用打印服务器
确保通用打印服务器和 VDA 上的系统时钟(日期、时间、时区)正确。