在通用打印服务器上启用 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 客户端。
使用 Microsoft 组策略和注册表配置 Microsoft SCHANNEL SSP,以用于加密的打印 Web 服务连接(TCP 端口 8443)。Microsoft 支持文章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 服务器配置
Universal Print Server 充当 SSL/TLS 服务器。
使用
Enable-UpsSsl.ps1 PowerShell 脚本配置 SSL/TLS 设置。
在通用打印服务器上安装 TLS 证书
对于 HTTPS,您必须在通用打印服务器上安装一个 SSL 服务器证书,该证书必须受 VDA 信任。使用 Microsoft Active Directory 证书服务或其他证书颁发机构为通用打印服务器请求证书。
使用微软活动目录证书服务注册/请求证书时,请记住以下注意事项:
-
将证书放置在本地计算机的 Personal 证书存储中。
-
将证书主题专有名称 (Subject DN) 的 Common Name 属性设置为通用打印服务器的完全限定域名 (FQDN)。在证书模板中指定此项。
-
将用于生成证书请求和私钥的加密服务提供程序 (CSP) 设置为 Microsoft Enhanced RSA and AES Cryptographic Provider (Encryption)。在证书模板中指定此项。
-
将密钥大小设置为至少 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
要更改 Universal Print Server 上 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
Universal Print Server 上的 TLS 设置
如果您的负载平衡配置中有多个 Universal Print Server,请确保所有 Universal Print Server 上的 TLS 设置配置一致。
在 Universal Print Server 上配置 TLS 时,已安装的 TLS 证书的权限会更改,从而授予 Universal Printing Service 对证书私钥的读取访问权限,并通知 Universal Printing Service 以下信息:
-
证书存储中用于 TLS 的证书。
-
用于 TLS 连接的 TCP 端口号。
必须配置 Windows 防火墙(如果已启用)以允许这些 TCP 端口上的传入连接。使用 Enable-UpsSsl.ps1 PowerShell 脚本时,将为您完成此配置。
-
允许的 TLS 协议版本。
Universal Print Server 支持 TLS 协议版本 1.3 和 1.2。请指定允许的最低版本。
默认 TLS 协议版本为 1.2。
注意:
从 Citrix Virtual Apps and Desktops 2311 版开始,不再支持 TLS 1.1 和 1.0。
-
允许的 TLS 密码套件。
密码套件选择用于连接的加密算法。VDA 和通用打印服务器可以支持不同的密码套件集。当 VDA 连接并发送支持的 TLS 密码套件列表时,通用打印服务器会将客户端的密码套件之一与其自身配置的密码套件列表中的一个密码套件进行匹配,并接受连接。如果没有匹配的密码套件,通用打印服务器将拒绝连接。
通用打印服务器支持以下密码套件集,分别命名为 GOV(政府)、COM(商业)和 ALL,适用于 OPEN、FIPS 和 SP800-52 本机加密套件模式。可接受的密码套件还取决于 SSL FIPS 模式策略设置和 Windows FIPS 模式。有关 Windows FIPS 模式的信息,请参阅这篇 Microsoft 支持文章。
| 密码套件(按优先级降序排列) | OPEN ALL | OPEN COM | OPEN GOV | FIPS ALL | FIPS COM | FIPS GOV | SP800-52 ALL | SP800-52 COM | SP800-52 GOV |
|---|---|---|---|---|---|---|---|---|---|
| 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 |
CGP SSL 端口 <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 模式
在 Delivery Controller™ 上,运行 Web Studio 并将 UPS FIPS 模式 Citrix 策略设置设为已启用。启用 Citrix 策略。
在每个 VDA 上执行以下操作:
-
启用 Windows FIPS 模式。
-
重新启动 VDA。
在服务器上启用 FIPS 模式
在每个 Universal Print Server 上执行以下操作:
-
启用 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 模式
在每个通用打印服务器上执行以下操作:
-
禁用 Windows FIPS 模式。
-
以管理员身份运行此 PowerShell 命令:
stop-service CitrixXTEServer, UpSvc -
使用
-Enable -FIPSMode $false参数运行Enable-UpsSsl.ps1脚本。 -
重新启动通用打印服务器。
注意:
当 SSL 协议版本设置为 TLS 1.3 时,不支持 FIPS 模式。
配置 SSL/TLS 协议版本
默认的 SSL/TLS 协议版本是 TLS 1.2。TLS 1.2 和 TLS 1.3 是生产环境中推荐的 SSL/TLS 协议版本。为了进行故障排除,可能需要在非生产环境中临时更改 SSL/TLS 协议版本。
Universal Print Server 不支持 SSL 2.0 和 SSL 3.0。
在服务器上设置 SSL/TLS 协议版本
在每台 Universal Print Server 上执行以下操作:
-
以管理员身份运行此 PowerShell 命令:
stop-service CitrixXTEServer, UpSvc -
运行
Enable-UpsSsl.ps1脚本,并使用-Enable -SSLMinVersion版本参数。请记住,测试完成后将其设置回 TLS 1.2 或 TLS 1.3。 -
重新启动 Universal Print Server。
在客户端上设置 SSL/TLS 协议版本
在 Studio 中,将SSL 协议版本策略设置设为所需的协议版本并启用该策略。
确保 VDA 的操作系统支持所选的 TLS 版本。有关 Windows 上支持的 TLS 版本,请参阅 Microsoft Learn - TLS 协议版本支持。要配置注册表以覆盖默认设置,请参阅 Microsoft Learn - TLS、DTLS 和 SSL 协议版本设置。
故障排除
如果发生连接错误,请检查 Universal Print Server 上的 C:\Program Files (x86)\Citrix\XTE\logs\error.log 文件。
如果 SSL/TLS 握手失败,此日志文件中将显示错误消息 SSL handshake from client failed。如果 VDA 和 Universal Print Server 上的 SSL/TLS 协议版本不匹配,则可能会发生此类故障。
在包含 Universal Print Server 主机名的以下策略设置中使用 Universal Print Server FQDN:
-
会话打印机
-
打印机分配
-
用于负载平衡的通用打印服务器
确保通用打印服务器和 VDA 上的系统时钟(日期、时间、时区)正确无误。