Citrix Virtual Apps and Desktops 7 2311

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

虚拟投递代理 (VDA) 与通用打印服务器之间的基于 TCP 的连接支持传输层安全性 (TLS) 协议。

警告:

对于涉及 Windows 注册表的操作(编辑),不正确地编辑注册表可能会导致严重问题,甚至可能需要重新安装操作系统。Citrix® 无法保证能够解决因不正确使用注册表编辑器而导致的问题。使用注册表编辑器风险自负。编辑注册表之前,请务必备份注册表。

VDA 与通用打印服务器之间的打印连接类型

明文连接方式

以下与打印相关的连接源自 VDA 并连接到通用打印服务器上的端口。仅当“启用 SSL”策略设置为“已禁用”(默认值)时,才会建立这些连接。

  • 明文打印 Web 服务连接(TCP 端口 8080)
  • 明文打印数据流 (CGP) 连接(TCP 端口 7229)

Microsoft 支持文章 (https://support.microsoft.com/zh-cn/help/832017/service-overview-and-network-port-requirements-for-windows) 介绍了 Microsoft Windows 打印后台处理程序服务使用的端口。本文档中的 SSL/TLS 设置不适用于 Windows 打印后台处理程序服务建立的 NetBIOS 和 RPC 连接。如果“启用通用打印服务器”策略设置为“已启用,并回退到 Windows 的本机远程打印”,则 VDA 将使用 Windows 网络打印提供程序 (win32spl.dll) 作为回退。

通用打印服务器安全

加密连接方式

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

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

通用打印服务器安全 2

SSL/TLS 客户端配置

VDA 充当 SSL/TLS 协议的客户端。

使用微软组策略和注册表配置微软 SCHANNEL SSP,以实现加密的打印 Web 服务连接(TCP 端口 8443)。微软支持文章 TLS 注册表设置 详细介绍了微软 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 服务器。

Use the Enable-UpsSsl.ps1 PowerShell script to configure SSL/TLS settings.

在通用打印服务器上安装 TLS 服务器证书

对于 HTTPS,通用打印服务器通过使用服务器证书支持 TLS 功能。不使用客户端证书。使用 Microsoft Active Directory 证书服务或其他证书颁发机构为通用打印服务器请求证书。

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

  1. 将证书放置在本地计算机的个人证书存储中。
  2. 将证书主题可分辨名称 (Subject DN) 的公用名属性设置为 Universal Print Server 的完全限定域名 (FQDN)。在证书模板中指定此项。
  3. Set the Cryptographic Service Provider (CSP) used to generate the certificate request and private key to Microsoft Enhanced RSA and AES Cryptographic Provider (Encryption). Specify this in the certificate template.
  4. 将密钥大小设置为至少 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 脚本的用法说明,请参阅后面的部分):

  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 协议版本。

Universal Print Server 支持 TLS 协议版本 1.3 和 1.2。请指定允许的最低版本。

默认 TLS 协议版本为 1.2。

注意:

TLS 1.1 and 1.0 are no longer supported from Citrix Virtual Apps and Desktops version 2311.

  • 允许使用哪些 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
使用ECDHE密钥交换、RSA认证、AES256-CBC加密和SHA384哈希的TLS加密套件 X   X X   X X   X
使用ECDHE密钥交换、RSA认证、AES256-CBC加密和SHA哈希的TLS加密套件 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 连接。

重要:

EnableDisable 指定为第一个参数。如果本地计算机个人证书存储中只有一个证书具有通用打印服务器的 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 标准的加密技术用于通用打印服务器的加密连接。

在客户端上配置 FIPS 模式之前,请先在服务器上配置 FIPS 模式。

请查阅 Microsoft 的文档站点以了解如何启用/禁用 Windows FIPS 模式。

在客户端上启用 FIPS 模式

在 交付控制器™ 上,运行 Web 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 模式

在 Web 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 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 协议版本

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

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

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

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

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

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

    重要:

    请记住,在完成测试后,务必将注册表设置恢复到其原始值。

  3. 重新启动 VDA。

故障排除

If a connection error occurs, check the C:\Program Files (x86)\Citrix\XTE\logs\error.log file on the Universal Print Server.

如果 SSL/TLS 握手失败,此日志文件中将显示错误消息 SSL handshake from client failed。如果 VDA 和通用打印服务器上的 SSL/TLS 协议版本不匹配,则可能会发生此类故障。

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

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

确保 Universal Print Server 和 VDA 上的系统时钟(日期、时间和时区)正确无误。

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