通用打印服务器上的传输层安全性 (TLS)

Virtual Delivery Agent (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) 作为回退。

通用打印服务器安全

加密连接

这些与打印相关的连接来自 VDA,并连接到通用打印服务器上的端口。仅当 SSL 已启用策略设置设为已启用时,才会建立这些连接。

  • 加密的打印 Web 服务连接(TCP 端口 8443)
  • 加密的打印数据流 (CGP) 连接(TCP 端口 443)

通用打印服务器安全 2

SSL/TLS 客户端配置

VDA 作为 SSL/TLS 客户端运行。

使用 Microsoft 组策略和注册表可配置用于加密的打印 Web 服务连接(TCP 端口 8443)的 Microsoft SCHANNEL SSP。Microsoft 支持文章 TLS 注册表设置描述了 Microsoft 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

注意:

配置此组策略设置后,仅当连接出现在两个 SSL 密码套件列表中时,VDA 才为加密的打印 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,通用打印服务器通过使用服务器证书来支持 TLS 功能。不使用客户端证书。使用 Microsoft Active Directory 证书服务或其他证书颁发机构为通用打印服务器申请证书。

使用 Microsoft Active Directory 证书服务注册/申请证书时,请谨记以下注意事项:

  1. 将证书放置在本地计算机个人证书存储中。
  2. 将证书的使用者可分辨名称(使用者 DN)的公用名属性设置为通用打印服务器的完全限定域名 (FQDN)。请在证书模板中指定此设置。
  3. 将用于生成证书请求和私钥的加密服务提供程序 (CSP) 设置为 Microsoft 增强型 RSA 和 AES 加密提供程序(加密)。请在证书模板中指定此设置。
  4. 将密钥大小至少设置为 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 脚本的说明):

  1. Stop-Service CitrixXTEServer, UpSvc
  2. Enable-UpsSsl.ps1 -Enable -HTTPSPort <port> -CGPSSLPort <port>Enable-UpsSsl.ps1 -Disable -HTTPPort <port> -CGPPort <port>
  3. 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 和通用打印服务器可以支持不同的密码套件组。VDA 连接并发送支持的 TLS 密码套件列表时,通用打印服务器将客户端的密码套件之一与其自己的配置密码套件列表中的密码套件之一进行匹配,并接受连接。如果没有匹配的密码套件,通用打印服务器将拒绝连接。

对于 OPEN、FIPS 和 SP800-52 本机加密套件模式,通用打印服务器支持以下名为 GOV(ernment)、COM(mercial) 和 ALL 的密码套件集。可接受的密码套件还取决于 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 连接。

重要:

指定启用禁用作为第一个参数。如果本地计算机个人证书存储中只有一个证书具有通用打印服务器的 FQDN,“证书指纹”参数将为可选参数。其他参数为可选参数。

语法

Enable-UpsSSL.ps1 -Enable [-HTTPPort <端口>] [-CGPPort <端口>] [–HTTPSPort <端口>] [-CGPSSLPort <端口>] [-SSLMinVersion <版本>] [-SSLCipherSuite <名称>] [-CertificateThumbprint <指纹>] [-FIPSMode <布尔值>] [-ComplianceMode <模式>]
Enable-UpsSSL.ps1 -Disable [-HTTPPort <端口号>] [-CGPPort <端口号>]
参数 说明
启用 在 XTE 服务器上启用 SSL/TLS。此参数或 Disable 参数为必需参数。
禁用 在 XTE 服务器上禁用 SSL/TLS。此参数或 Enable 参数为必需参数。
CertificateThumbprint "<thumbprint>" 本地计算机个人证书存储中 TLS 证书的指纹,两边用引号引起。脚本使用指定的指纹来选择要使用的证书。
HTTPPort <port> 明文打印 Web 服务 (HTTP/SOAP) 端口。默认值:8080
CGPPort <port> 明文打印数据流 (CGP) 端口默认值:7229
HTTPSPort <port> 加密的打印 Web 服务 (HTTPS/SOAP) 端口。默认值:8443
CGPSSLPort <port> 加密的打印数据流 (CGP) 端口。默认值:443
SSLMinVersion "<version>" 最低 TLS 协议版本,两边用引号引起。有效值:TLS_1.0、TLS_1.1 和 TLS_1.2。默认值:TLS_1.2。
SSLCipherSuite “<name>” TLS 密码套件包的名称,两边用引号引起。有效值:GOV、COM 和 ALL(默认值)。
FIPSMode <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 模式。

请查询 Microsoft 的文档站点,了解有关启用/禁用 Windows FIPS 模式的信息。

在客户端上启用 FIPS 模式

在 Delivery Controller 上,运行 Citrix Studio,并将 SSL FIPS 模式 Citrix 策略设置设为已启用。启用 Citrix 策略。

请在每个 VDA 上执行以下操作:

  1. 启用 Windows FIPS 模式。
  2. 重新启动 VDA。

在服务器上启用 FIPS 模式

请在每个通用打印服务器上执行以下操作:

  1. 启用 Windows FIPS 模式。
  2. 以管理员身份运行此 PowerShell 命令:stop-service CitrixXTEServer, UpSvc
  3. 运行带有 -Enable -FIPSMode $true 参数的 Enable-UpsSsl.ps1 脚本:
  4. 重新启动通用打印服务器。

在客户端上禁用 FIPS 模式

在 Delivery Controller 上,运行 Citrix Studio,并将 SSL FIPS 模式 Citrix 策略设置设为已禁用。启用 Citrix 策略。还可以删除 SSL FIPS 模式 Citrix 策略设置。

请在每个 VDA 上执行以下操作:

  1. 禁用 Windows FIPS 模式。
  2. 重新启动 VDA。

在服务器上禁用 FIPS 模式

请在每个通用打印服务器上执行以下操作:

  1. 禁用 Windows FIPS 模式。
  2. 以管理员身份运行此 PowerShell 命令:stop-service CitrixXTEServer, UpSvc
  3. 运行带有 -Enable -FIPSMode $false 参数的 Enable-UpsSsl.ps1 脚本:
  4. 重新启动通用打印服务器。

配置 SSL/TLS 协议版本

默认 SSL/TLS 协议版本为 TLS 1.2。TLS 1.2 是唯一推荐用于生产使用的 SSL/TLS 协议版本。为了进行故障排除,可能需要在非生产环境中临时更改 SSL/TLS 协议版本。

通用打印服务器不支持 SSL 2.0 和 SSL 3.0。

在服务器上设置 SSL/TLS 协议版本

请在每个通用打印服务器上执行以下操作:

  1. 以管理员身份运行此 PowerShell 命令:stop-service CitrixXTEServer, UpSvc
  2. 运行带有 -Enable -SSLMinVersion 版本参数的 Enable-UpsSsl.ps1 脚本。请记住在完成测试后将其设置回 TLS 1.2。
  3. 重新启动通用打印服务器。

在客户端上设置 SSL/TLS 协议版本

请在每个 VDA 上执行以下操作:

1. 在 Delivery Controller 上,将 SSL 协议版本策略设置设为所需的协议版本,并启用该策略。

2. Microsoft 支持文章 TLS 注册表设置描述了 Microsoft SCHANNEL SSP 的注册表设置。使用注册表设置启用客户端 TLS 1.0、TLS 1.1 或 TLS 1.2

重要:

请谨记在完成测试后将注册表设置还原为原始值。

3. 重新启动 VDA。

故障排除

如果出现连接错误,请检查通用打印服务器上的 C:\Program Files (x86)\Citrix\XTE\logs\error.log 日志文件。

如果 SSL/TLS 握手失败,此日志文件中将显示来自客户端的 SSL 握手失败错误消息。如果 VDA 和通用打印服务器上的 SSL/TLS 协议版本不匹配,可能会出现此类故障。

在下面包含通用打印服务器主机名的策略设置中使用通用打印服务器 FQDN:

  • 会话打印机
  • 打印机分配
  • 用于负载平衡的通用打印服务器

确保通用打印服务器和 VDA 上的系统时钟(日期、时间和时区)正确无误。