技术论文:联网 SSL /TLS 最佳实践

概述

本技术论文旨在传达熟练掌握ADC的人员将如何配置为在 Qualys SSL实验室获得A +等级的通用实现。

Qualys SSL Labs执行一系列强大的测试,并提供一个记分卡,您可以使用它来改进配置。扫描是免费的,只需大约一分钟即可完成。

Qualys 积极开发 SSL 实验室。随着新协议的创建和漏洞的发现,测试可能会发生变化。定期测试站点以确保不会暴露任何新漏洞,这是一种很好的做法。

注意:请 与您的安全团队讨论您的部署。安全专家说,SSL Labs A +是一个不错的总体目标,但它可能不符合贵组织的需求。

需要验证的配置项

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

SSL Labs 完成测试后,它会为 4 个类别中的每个类别显示一个字母等级以及一个分数等级:

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

每个类别都会获得一个数字分数,然后 SSL Labs 将其平均分为总分。SSL Labs 建议不要使用的一些特殊情况和配置(例如启用 SSLv3)可能会限制您的最终成绩。您可以 在此处找到有关 SSL Labs 如何对服务器进行分级的完整文档。

执行问题

SSL 配置文件

本文使用 SSL 配置文件。首次启用时,SSL 配置文件会将 所有 SSL 虚拟服务器设置为使用默认配置文件。

SSL 配置文件优先于全局和每个虚拟服务器 SSL 参数。

客户支持

本文中的某些配置步骤可能会导致旧客户端和浏览器的连接问题。例如,Windows 7 和 8.1 上的 Internet Explorer 11 仅支持较旧的密码套件,而其他较旧的浏览器可能完全不支持 TLS1.2 和 ECC 密码。在缺少支持的情况下,客户端可能会遇到错误消息以及无法显示站点。

SSL Labs 的首页上有一个“测试您的浏览器”按钮,以帮助确定您的需求。

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

在为虚拟应用程序和桌面部署网关虚拟服务器时,请查看以下有关客户端密码支持的文章:

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

基本步骤 - GUI

采取以下步骤确保在 SSL 实验室测试中获得高分。

  • 确保 ADC 运行的是最新的固件版本 - 建议使用 13.0 内部版本 71 或更高版本以利用 TLS1.3 硬件加速

  • 确保证书链完整且可信

    • 根 CA 并不总是直接签署证书。相反,根 CA 通常使用中间机构来签署证书
    • 在 ADC 上安装中间证书。将其链接到绑定到虚拟服务器的服务器证书
    • 中间证书由提供服务器证书的供应商提供,通常以“证书捆绑包”的形式提供。它们通常可以在供应商的公共网站上找到
    • 您可能需要安装和链接多个中间证书。要使服务器证书发挥作用,ADC 必须发送完整的链。完整链的结尾是一个由客户端受信任的根 CA 签名的证书
    • 由于客户端已经拥有受信任的根 CA,因此您无需在 ADC 上安装和链接它
    • 要安装中间证书,请转到: 流量管理 > SSL > 证书 > CA 证书 ,然后选择 安装注意: Citrix ADC 的早期版本在 GUI 中没有“CA 证书”选项
    • 通过选择证书并从操作菜单中选择 链接来链接 中间体
    • 如果安装了正确的中间证书,它将自动填充到链接菜单中

CA 证书安装

证书链接

Certificate-Linked

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

Create-Group

  • 启用 SSL 配置文件

导航到 流量管理 > SSL > 更改高级 SSL 设置,向下滚动,然后选择 启用默认配置文件

启用_默认_配置文件

SSL 配置文件将 所有 SSL 虚拟服务器设置为在首次启用时使用默认配置文件。删除现有的每个虚拟服务器 SSL 设置后,ADC 将提示您进行确认。

确认_默认_配置文件

  • 创建 SSL 配置文件
    • 导航到 系统 > 配置文件 > SSL 配置文件,然后选择 添加
      SSL_Profile - 将配置文件命名为“SSL_Labs_Profile_Q4_2021” - 滚动到拒绝 SSL 重新协商并选择不安全以仅允许支持 RFC 5746 的客户端重新协商 - 滚动到 HSTS,勾选 HSTS,然后指定最大使用期限为 157680000 秒 - 滚动到协议并仅选择 TLSv12 和 TLSv13 SSL_Profile_Protocols - 滚动到表单末尾并选择确定 - 滚动到 SSL 密码,选择要编辑的铅笔图标,然后单击全部删除 - 单击添加并添加我们之前创建的密码组 SSL_Profile_Cipher_List - 滚动到表单末尾并选择完成
  • 将 SSL 配置文件绑定到 SSL 虚拟服务器
    • 在选定的虚拟服务器上,选择铅笔图标以编辑绑定的 SSL 配置文件
    • 从下拉列表中选择我们创建的 SSL 配置文件
    • 单击 OK(确定)

基本步骤-CLI

采取以下步骤确保在 SSL 实验室测试中获得高分。

在下面的 CLI 示例中,SSL 虚拟服务器的名称被列为 前虚拟服务器 -可以替换为环境中 SSL 虚拟服务器的名称。

  • 创建偏好 ECDHE 和 ECDSA 密码套件的自定义密码组
add ssl cipher SSL_Labs_Cipher_Group_Q4_2021

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

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

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

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

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

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

bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.2-ECDHE-RSA-AES256-GCM-SHA384
<!--NeedCopy-->
  • 启用 SSL 配置文件
set ssl parameter -defaultProfile ENABLED
<!--NeedCopy-->
  • 创建 SSL 配置文件
add ssl profile SSL_Labs_Profile_Q4_2021 -tls1 DISABLED -tls11 DISABLED -tls12 ENABLED -tls13 ENABLED -denySSLReneg NONSECURE -HSTS ENABLE
<!--NeedCopy-->
  • 从 SSL 配置文件取消绑定默认密码组并绑定自定义组
unbind ssl profile SSL_Labs_Profile_Q4_2021 -cipherName DEFAULT

bind ssl profile SSL_Labs_Profile_Q4_2021 -cipherName SSL_Labs_Cipher_Group_Q4_2021
<!--NeedCopy-->
  • 将 SSL 配置文件绑定到 SSL 虚拟服务器
set ssl vserver "Ex-vServer" -sslProfile SSL_Labs_Profile_Q4_2021
<!--NeedCopy-->

更多设置

SHA1 证书

使用 SHA1 签名的证书被视为弱证书,因此无法在 SSL 实验室测试中获得较高的分数。如果有任何证书是 SHA1 签名的,则应将其替换为 SHA256 证书并安装在 ADC 上。

DNS CAA

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

在 SSL 实验室,A+ 不需要 DNS CAA,这是一个可选步骤。您可以在这里找到更多关于 DNS CAA 的信息。

旧版客户支持

我们在本指南中使用的 ECDHE 密码取代了较旧的速度较慢的 DHE 密码。如果您有无法升级的旧版客户端,则可能别无选择,只能启用 DHE。

在 GUI 中启用 DHE 密码套件

  • 转到 流量管理 > SSL 并选择 创建差异-地尔曼 (DH) 密钥

Create_DH_Key_config

  • 将 Diffie-Hellman 密钥命名为“DH_Key_Name_Here.key”

  • 输入参数大小(位)。必须介于 512 和 2048 之间

  • 选择 Diffie-Hellman 生成器(2 或 5)

  • 选择创建(根据所选密钥大小),这可能需要相当长的时间才能完成

注意: 在屏幕完成之前,请勿浏览过此屏幕

Create_DH_Key_config

  • 导航到 系统 > 配置文件 > SSL 配置文件

  • 选择 SSL_Labs_Profile_Q4_2021 配置文件并选择编辑

  • 选择铅笔图标

  • 向下滚动到“启用 DH 参数”复选框并将其选中

  • 选择您刚刚创建的 DH 密钥

Enable_DH_Param_and_Key

  • 向下滚动并选择“确定

  • 将 DHE 密码套件绑定到我们之前创建的密码组

  • 导航到流量管理 > SSL > 密码组

  • 选择 TLS1.2-DHE-RSA-AES256-GCM-SHA384 密码

Bind_DHE_Cipher

  • 单击箭头将其添加到密码组

Select_DHE_Cipher_Added

在 CLI 中启用 DHE 密码套件

  • 创建 DH 密钥并将其绑定到 SSL 配置文件 (CLI)
create ssl dhparam DH_Key_Name_Here.key 2048 -gen 2

set ssl profile SSL_Labs_Profile_Q4_2021 -dh ENABLED -dhFile DH_Key_Name_Here.key
<!--NeedCopy-->
  • 将 DHE 密码套件绑定到我们之前创建的密码组
bind ssl cipher SSL_Labs_Cipher_Group_Q4_2021 -cipherName TLS1.2-DHE-RSA-AES256-GCM-SHA384
<!--NeedCopy-->

固件说明

  • Citrix 在固件版本 10.5 内部版本 57 中将 TLS1.2 作为默认启用

  • ROBOT 漏洞已在版本 12.0 内部版本 53、11.1 内部版本 56、11.0 内部版本 71 和 10.5 内部版本 67 中得到了解 — 更多详情请单击此处

  • HSTS(严格传输安全性)标志在 12.0 版本 35 中可用-之前的版本需要重写策略才能插入 HSTS 标头。您 不能 将两者都用作 ADC 来插入 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 在 13.0 版本 71中添加了 TLS1.3 硬件加速

技术论文:联网 SSL /TLS 最佳实践