Citrix网络SSL / TLS最佳实践
概述
本技术文章提供了验证Citrix ADC上运行的虚拟服务器的现有SSL / TLS配置所需的步骤,以及确保应用最佳实践的方法。我们介绍了配置项目,例如绑定到虚拟服务器的证书链、密码套件设置以及禁用易受攻击的旧协议。
有许多工具可用于验证受Citrix ADC保护的面向公众的站点的配置,其中一个工具是Qualys SSL实验室进行的SSL服务器测试。它对您的服务器执行一系列强大的测试,并提供了一个易于阅读的分数卡,您可以使用它来改进您的配置。扫描是免费的,只需大约一分钟即可完成。
Qualys积极开发SSL测试,因此,随着新协议的创建和新漏洞的发现,测试可能会在未来发生变化。由于此漏洞,最好定期测试站点,以确保不会暴露任何新漏洞。
注意:SSLabs会将正在测试的服务器URL连同最终得分一起发布在其公共仪表板上,除非选择了不在开发板上显示结果的选项。
需要验证的配置项
- 证书-全链是否提供并值得信赖?签名算法是否安全?
- 协议、密钥和密码支持-支持哪些SSL和TLS协议版本吗?哪些密码套件是首选的,以何种顺序?提供的密码套件是否支持前向保密?
- TLS握手模拟-确定由多个不同的客户端和浏览器协商哪种协议和密码
- 协议详细信息-是否支持安全重新协商?是否支持严格的传输安全 (HSTS)?
- 已知漏洞——服务器是否容易受到贵宾犬,野兽或TLS降级等攻击?
SSLLabs测试完成后,会显示字母等级以及四个类别中的每个类别的点刻度:
1 证书 2 协议支持 3 密钥交换 4 密码强度
上述每个类别都收到一个数字分数,然后平均为总分数。还有一些特殊情况或配置会限制最终成绩或取消积分,例如证书不受信任或启用SSLv3时。有关SSL实验室测试如何评分的完整文档可以在这里找到。
Citrix接收机\工作区应用程序网关部署的密码支持
重要信息:查看以下有关为虚拟应用程序和桌面部署网关虚拟服务器时客户端密码支持的文章:面向Citrix接收机的CTX234227和面向工作区应用程序的CTX250104
执行问题
本文中提到的一些配置步骤可能会导致旧客户端和浏览器的连接问题。例如,Windows XP SP2不支持SHA256证书;较旧的网页浏览器不能支持TLS1.2或ECC密码。如果缺少支持,客户端可能会遇到错误消息或无法显示站点。
注意:有关特定ADC固件的所需内部版本和其他说明,请参阅固件说明部分
基本步骤——GUI
以下是首先采取的一般步骤,以确保SSL实验室测试获得高的分。
确保ADC正在运行最近的固件版本——建议使用10.5版67本或更高版本
- 在虚拟服务器配置的SSL参数部分中禁用所有虚拟服务器(如果使用SSL默认配置文件,则为SSL配置文件)上禁用SSLv3
- 确保证书链完整且可信
- 证书并不总是由每个终端节点本质上信任的CA签名。通常他们是由中间CA签署的
- 中间证书安装在ADC上,然后链接到绑定到虚拟服务器的服务器证书
- 中间证书由提供服务器证书的供应商提供,通常在“证书捆绑包”中。它们通常也可以在供应商的公共网站上找到
- 必须安装和链接多个中间证书。为了使服务器证书正常运行,客户端必须收到以客户端已信任的CA证书结尾的证书链
- 用于对中间证书进行签名的根CA证书可能受到所有客户端的信任
- 要安装中间证书,请转到:流量管理> SSL >证书> CA证书,然后选择安装(注意:Citrix ADC的早期版本在GUI中没有“CA证书”选项)
- 安装中间证书后,可以通过选择证书并从操作菜单中选择链接将其链接链接到服务器证书。
- 如果安装了正确的中间证书,它将自动填充到链接菜单中。
- 确保在虚拟服务器配置的“SSL参数”部分中的所有虚拟服务器(如果使用SSL默认配置文件,则为SSL配置文件)启用了TLSV1.2
- 允许安全重新协商
- 转到流量管理> SSL,然后选择更改高级SSL设置
- 将拒绝SSL重新协商设置为非安全,以便仅允许支持RFC 5746的客户端重新协商
- 创建DH密钥以供她密码套件使用
- 注意:创建和绑定DH密钥是可选的,速度较慢,仅对缺乏ECDHE支持的老客户端有用。如果未绑定DH密钥,则忽略她密码套件。
- 转到流量管理> SSL并选择创建差异,地尔曼(DH)密钥
- 在DH文件名字段中,输入密钥文件的文件名(注意:设备上的默认路径为/ nsconfig / ssl /)
- 在DH参数大小中输入所需的DH密钥大小-1024或2048(注意:当前不支持4096位DH密钥)
- 注意:DH密钥大小预计与RSA密钥的大小相同,通常为2048位
- 选择 2 或 5 随机数生成器
- 点击创建-密钥生成可能需要一些时间
- 将DH密钥绑定到虚拟服务器
- 在选定的虚拟服务器上,打开SSL参数部分,然后单击编辑按钮(右上角的铅笔)
- 选中启用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(确定)
- 在虚拟服务器上启用严格传输安全性(hst)
- 在选定的虚拟服务器上,打开SSL参数部分,然后单击编辑按钮(右上角的铅笔)
- 选中该复选框以启用hst
- 在最大年龄字段中输入157680000
- 注意:此标志在版35本12.0及更高版本中可用。对于早期版本,请参阅本文添加hst支持。
基本步骤cli
以下是首先采取的一般步骤,以确保SSL实验室测试获得高的分。在下面的CLI示例中,SSL虚拟服务器的名称被列为前虚拟服务器——可以替换为环境中SSL虚拟服务器的名称。
- 确保在名为Ex-vServer的虚拟服务器上禁用SSL3并启用TLS1.2
集ssl vserver Ex-vServer-ssl3禁用-tls1启用-tls11启用-tls12使<!——NeedCopy>
- 要在前虚拟服务器上仅启用TLS1.2和TLS1.3,请使用以下命令代替上述内容
集ssl vserver Ex-vServer-ssl3禁用-tls1禁用-tls11禁用-tls12启用-tls13使<!——NeedCopy>
- 允许安全重新协商
集ssl参数-denySSLReneg不安全的<!——NeedCopy>
- 创建DH密钥并将其绑定到名为Ex-vServer的虚拟服务器
创建ssl dhparam DH_Key_Name_Here。关键的2048创2集ssl vServer Ex-vServerdh启用-dhFileDH_Key_Name_Here。关键的<!——NeedCopy>
- 创建偏好ECDHE和ECDSA密码套件的自定义密码组
add ssl cipher New_APlus_CipherGroup绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.3-CHACHA20-POLY1305-SHA256绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.3-AES128-GCM-SHA256绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.3-AES256-GCM-SHA384绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.2-ECDHE-ECDSA-AES256-SHA384绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.2-ECDHE-ECDSA-AES256-GCM-SHA384绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.2-DHE-RSA-AES256-GCM-SHA384绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.2-ECDHE-ECDSA-AES128-GCM-SHA256绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.2-ECDHE-RSA-CHACHA20-POLY1305绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.2-ECDHE-ECDSA-CHACHA20-POLY1305绑定ssl密码New_APlus_CipherGroup-cipherNameTLS1.2-ECDHE-RSA-AES256-GCM-SHA384 <!——NeedCopy>
- 从虚拟服务器中取消绑定默认密码组并绑定自定义组
解除绑定ssl vServer Ex-vServer-cipherName默认的绑定ssl vServer Ex-vServer-cipherNameNew_APlus_CipherGroup绑定ssl vServer Ex-vServer-eccCurveName所有的<!——NeedCopy>
- 在名为Ex-vServer的虚拟服务器上启用严格传输安全性(hst)
集ssl vServer Ex-vServer-HSTS启用maxage157680000 <!——NeedCopy>
更多设置
SHA1证书
使用SHA1签名的证书被认为是弱的,可以阻止SSLLabs测试中的高等级。如果有任何证书是SHA1签名的,它们将使用SHA256证书进行续订并安装在ADC上。
DNS中国电子网络
DNS证书颁发机构授权(CAA)允许CA验证是否有权为域颁发证书,并在出现问题时提供联系人。
这是在DNS服务器上配置的,而不是在ADC设备上配置的。
固件说明
随着发现新的漏洞,SSLLabs将对其进行测试,因此建议频繁进行测试。Citrix ADC代码增强功能可以解决某些漏洞。
最低必需版本:10.5版67本
机器人漏洞已在内部版本12.0构建53,11.1构建56,11.0构建71和10.5构建67中解决 -更多详细信息请点击此处查看
hst(严格传输安全性)标志在12.0版本35中可用——之前的版本需要重写策略才能插入hst标头。你不能使用两者,因为这会导致插入 2 个标题,这是不允许的。
10.5版本57中向VPX设备添加了对TLS1.2的支持。它在早期版本中可用于具有专用SSL硬件的设备
在12.1建立49.23中添加了对TLS1.3的支持,必须在虚拟服务器/ SSL配置文件中启用,并且TLS1.3密码(列出)必须绑定
在12.0版本57中,向VPX设备添加了ECC证书支持。它在早期版本中可用于具有专用SSL硬件的设备
僵尸狮子狗漏洞已在版本12.1版本50.31,12.0版本60.9,11.1构建60.14,11.0版本72.17和10.5版69.5本中得到解决。此漏洞仅影响带有氮化物SSL硬件的MPX \有关设备,这意味着带有ColeTO溪的MPX \有关设备不容易受到攻击;禁用基于CBC的密码套件也将缓解此漏洞。有关更多信息,请参阅CTX文章
密码列表已经修改,以解决CBC的弱点,从而删除了0 xc028和0 x39密码