Citrix Networking SSL/TLS 最佳实践

概述

本技术文章提供了验证 Citrix ADC 上运行的虚拟服务器的现有 SSL\ TLS 配置所需的步骤,以及确保应用最佳实践的方法。我们介绍了配置项目,例如绑定到虚拟服务器的证书链、密码套件设置以及禁用易受攻击的旧协议。

有许多工具可用于验证受 Citrix ADC 保护的面向公众的站点的配置-其中一个工具是 Qualys SSL Labs 进行的 SSL Server 测试。 它对您的服务器执行一系列强大的测试,并提供了一个易于阅读的分数卡,您可以使用它来改进您的配置。扫描是免费的,只需大约一分钟即可完成。

Qualys 积极开发 SSL 测试,因此,随着新协议的创建和新漏洞的发现,测试可能会在未来发生变化。由于此漏洞,最好定期测试站点,以确保不会暴露任何新漏洞。

注意: SSLabs 会将正在测试的服务器 URL 连同最终得分一起发布在其公共仪表板上,除非选择了 不在开发板上显示结果 的选项。

需要验证的配置项

  • 证书 -全链是否提供并值得信赖?签名算法是否安全?
  • 协议、密钥和密码支持-支 持哪些 SSL 和 TLS 协议版本?哪些密码套件是首选的,以何种顺序?提供的密码套件是否支持前向保密?
  • TLS 握手模拟 -确定由多个不同的客户端和浏览器协商哪种协议和密码
  • 协议详细信息 -是否支持安全重新协商?是否支持严格的传输安全 (HSTS)?
  • 已知漏洞 -服务器是否容易受到 POODLE、BEAST 或 TLS 降级等攻击?

SSLLabs 测试完成后,会显示字母等级以及四个类别中的每个类别的点刻度:

1 证书 2 协议支持 3 密钥交换 4 密码强度

上述每个类别都收到一个数字分数,然后平均为总分数。还有一些特殊情况或配置会限制最终成绩或取消积分-例如证书不受信任或启用 SSLv3 时。有关 SSL Labs 测试如何评分的完整文档可以 在这里找到。

Citrix Receiver\ Workspace 应用程序网关部署的密码支持

重要信息: 查看以下有关为虚拟应用程序和桌面部署网关虚拟服务器时客户端密码支持的文章:面向 Citrix Receiver 的 CTX234227面向 Workspace 应用程序的 CTX250104

执行问题

本文中提到的一些配置步骤可能会导致旧客户端和浏览器的连接问题。例如,Windows XP SP2 不支持 SHA256 证书;较旧的 Web 浏览器不能支持 TLS1.2 或 ECC 密码。如果缺少支持,客户端可能会遇到错误消息或无法显示站点。

注意: 有关特定 ADC 固件 的所需内部版本和其他说明,请参阅固件说明部分

基本步骤 - GUI

以下是首先采取的一般步骤,以确保 SSL Labs 测试获得高分。

  • 确保 ADC 正在运行最近的固件版本-建议使用 10.5 版本 67 或更高版本

    • 在虚拟服务器配置的 SSL 参数部分中禁用所有虚拟服务器(如果使用 SSL 默认配置文件,则为 SSL 配置文件)上禁用 SSLv3

SSLv3-Disabled

  • 确保证书链完整且可信
    • 证书并不总是由每个终端节点本质上信任的 CA 签名。通常他们是由中间 CA 签署的
    • 中间证书安装在 ADC 上,然后链接到绑定到虚拟服务器的服务器证书
    • 中间证书由提供服务器证书的供应商提供,通常在 “证书捆绑包” 中。它们通常也可以在供应商的公共网站上找到
    • 必须安装和链接多个中间证书。为了使服务器证书正常运行,客户端必须收到以客户端已信任的 CA 证书结尾的证书链
    • 用于对中间证书进行签名的根 CA 证书可能受到所有客户端的信任
    • 要安装中间证书,请转到: 流量管理 > SSL > 证书 > CA 证书 ,然后选择 安装注意: Citrix ADC 的早期版本在 GUI 中没有 “CA 证书” 选项
    • 安装中间证书后,可以通过选择证书并从操作菜单中选择 链接将其链接链接 到服务器证书。
    • 如果安装了正确的中间证书,它将自动填充到链接菜单中。

CA 证书安装

证书链接

证书链接

  • 确保在虚拟服务器配置的 “SSL 参数” 部分中的所有虚拟服务器(如果使用 SSL 默认配置文件,则为 SSL 配置文件)启用了 TLSV1.2

TLSv12-Enabled

  • 允许安全重新协商
    • 转到 流量管理 > SSL ,然后选择 更改高级 SSL 设置
    • 拒绝 SSL 重新协商 设置为 非安全 ,以便仅允许支持 RFC 5746 的客户端重新协商

安全重新谈判

  • 创建 DH 密钥以供 DHE 密码套件使用
    • 注意: 创建和绑定 DH 密钥是可选的,速度较慢,仅对缺乏 ECDHE 支持的老客户端有用。如果未绑定 DH 密钥,则忽略 DHE 密码套件。
    • 转到 流量管理 > SSL 并选择 创建差异-地尔曼 (DH) 密钥
    • DH 文件名 字段中,输入密钥文件的文件名(注意:设备上的默认路径为 /nsconfig/ssl/)
    • 在 DH 参数大小中输入所需的 DH 密钥大小 -1024 或 2048(注意:当前不支持 4096 位 DH 密钥)
    • 注意: DH 密钥大小预计与 RSA 密钥的大小相同,通常为 2048 位
    • 选择 2 或 5 随机数生成器
    • 点击 创建 -密钥生成可能需要一些时间

DH-Generate

  • 将 DH 密钥绑定到虚拟服务器
    • 在选定的虚拟服务器上,打开 SSL 参数 部分,然后单击编辑按钮(右上角的铅笔)
    • 选中 启用 DH 参数的复选框
    • 将文件路径设置为先前创建的密钥文件

DH-绑定

  • 创建提供前向保密性 (FS) 的自定义密码组
    • 转到 流量管理 > SSL > 密码组 ,然后选择 添加
    • 输入密码组的名称
    • 单击 + 添加 然后展开 + 所有 部分-选择以下密码套件:
      • TLS1.3-CHACHA20-POLY1305-SHA256
      • TLS1.3-AES128-GCM-SHA256
      • TLS1.3-AES256-GCM-SHA384
      • TLS1.2-ECDHE-ECDSA-AES256-SHA384
      • TLS1.2-ECDHE-ECDSA-AES256-GCM-SHA384
      • TLS1.2-DHE-RSA-AES256-GCM-SHA384
      • TLS1.2-ECDHE-ECDSA-AES128-GCM-SHA256
      • TLS1.2-ECDHE-RSA-CHACHA20-POLY1305
      • TLS1.2-ECDHE-ECDSA-CHACHA20-POLY1305
      • TLS1.2-ECDHE-RSA-AES256-GCM-SHA384
    • 单击 > 向右箭头将密码从“ 可用”列移动到“ 已配置”列
    • 单击创建

创建组

  • 将密码组绑定到虚拟服务器
    • 在选定的虚拟服务器上,打开 SSL 密 码部分,然后单击编辑按钮(右上角的铅笔)
    • 使用“全部删除”按钮或每个项目上的 - 图标 删除任何现有 的密码或密码组
    • 选择 密码组 单选按钮,然后选择先前创建的密码组
    • 单击 OK(确定)

添加组

添加密码组

  • 在虚拟服务器上启用严格传输安全性 (HSTS)
    • 在选定的虚拟服务器上,打开 SSL 参数 部分,然后单击编辑按钮(右上角的铅笔)
    • 选中该复选框以启用 HSTS
    • 最大年龄字段中输入 157680000
    • 注意: 此标志在版本 12.0 35 及更高版本中可用。对于早期版本,请参阅本文添加 HSTS 支持。

HST 启用

基本步骤-CLI

以下是首先采取的一般步骤,以确保 SSL Labs 测试获得高分。在下面的 CLI 示例中,SSL 虚拟服务器的名称被列为 前虚拟服务器 -可以替换为环境中 SSL 虚拟服务器的名称。

  • 确保在名为 Ex-vServer 的虚拟服务器上禁用 SSL3 并启用 TLS1.2
set ssl vserver Ex-vServer -ssl3 DISABLED -tls1 ENABLED -tls11 ENABLED -tls12 ENABLED
<!--NeedCopy-->
  • 要在 前虚拟服务器 上仅启用 TLS1.2 和 TLS1.3,请使用以下命令代替上述内容
set ssl vserver Ex-vServer -ssl3 DISABLED -tls1 DISABLED -tls11 DISABLED -tls12 ENABLED -tls13 ENABLED
<!--NeedCopy-->
  • 允许安全重新协商
set ssl parameter -denySSLReneg NONSECURE
<!--NeedCopy-->
  • 创建 DH 密钥并将其绑定到名为 Ex-vServer 的虚拟服务器
create ssl dhparam DH_Key_Name_Here.key 2048 -gen 2

set ssl vServer Ex-vServer -dh ENABLED -dhFile DH_Key_Name_Here.key
<!--NeedCopy-->
  • 创建偏好 ECDHE 和 ECDSA 密码套件的自定义密码组
add ssl cipher New_APlus_CipherGroup

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.3-CHACHA20-POLY1305-SHA256

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.3-AES128-GCM-SHA256

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.3-AES256-GCM-SHA384

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.2-ECDHE-ECDSA-AES256-SHA384

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.2-ECDHE-ECDSA-AES256-GCM-SHA384

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.2-DHE-RSA-AES256-GCM-SHA384

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.2-ECDHE-ECDSA-AES128-GCM-SHA256

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.2-ECDHE-RSA-CHACHA20-POLY1305

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.2-ECDHE-ECDSA-CHACHA20-POLY1305

bind ssl cipher New_APlus_CipherGroup -cipherName TLS1.2-ECDHE-RSA-AES256-GCM-SHA384
<!--NeedCopy-->
  • 从虚拟服务器中取消绑定默认密码组并绑定自定义组
unbind ssl vServer Ex-vServer -cipherName DEFAULT

bind ssl vServer Ex-vServer -cipherName New_APlus_CipherGroup

bind ssl vServer Ex-vServer -eccCurveName ALL
<!--NeedCopy-->
  • 在名为 Ex-vServer 的虚拟服务器上启用严格传输安全性 (HSTS)
set ssl vServer Ex-vServer -HSTS ENABLED -maxage 157680000
<!--NeedCopy-->

更多设置

SHA1 证书

使用 SHA1 签名的证书被认为是弱的,可以阻止 SSLLabs 测试中的高等级。如果有任何证书是 SHA1 签名的,它们将使用 SHA256 证书进行续订并安装在 ADC 上。

DNS 中国电子网络

DNS 证书颁发机构授权 (CAA) 允许 CA 验证是否有权为域颁发证书,并在出现问题时提供联系人。

这是在 DNS 服务器上配置的,而不是在 ADC 设备上配置的。

固件说明

随着发现新的漏洞,SSLLabs 将对其进行测试,因此建议频繁进行测试。Citrix ADC 代码增强功能可以解决某些漏洞。

  • 最低必需版本:10.5 版本 67

  • ROBOT 漏洞已在内部版本 12.0 Build 53、11.1 Build 56、11.0 Build 71 和 10.5 Build 67 中解决 - 更多详细信息请点击此处查看

  • HSTS(严格传输安全性)标志在 12.0 版本 35 中可用-之前的版本需要重写策略才能插入 HSTS 标头。你不 使用两者,因为这会导致插入 2 个标题,这是不允许的。

  • 10.5 版本 57 中向 VPX 设备添加了对 TLS1.2 的支持。它在早期版本中可用于具有专用 SSL 硬件的设备

  • 12.1 Build 49.23 中添加了对 TLS1.3 的支持 - 必须在虚拟服务器/SSL 配置文件中启用,并且 TLS1.3 密码(列出)必须绑定

  • 12.0 版本 57中,向 VPX 设备添加了 ECC 证书支持。它在早期版本中可用于具有专用 SSL 硬件的设备

  • 僵尸 POODLE 漏洞已在版本 12.1 版本 50.31、12.0 版本 60.9、11.1 构建 60.14、11.0 版本 72.17 和 10.5 版本 69.5中得到解决。此漏洞仅影响带有 Nitrox SSL 硬件的 MPX\ SDX 设备,这意味着带有 ColeTO Creek 的 MPX\ SDX 设备不容易受到攻击;禁用基于 CBC 的密码套件也将缓解此漏洞。 有关更多信息,请参阅 CTX 文章

  • 密码列表已经修改,以解决 CBC 的弱点,从而删除了 0xc028 和 0x39 密码

Citrix Networking SSL/TLS 最佳实践