Citrix ADC

SSL拦截

配置为SSL拦截的Citrix ADC设备充当致理性。它可以拦截和解密ssl / tls批量,检查未加载的请求,并使定理员能够执执执规则和安防检查要要,阻止或允许哪些哪些销量。例如,不具备进出金属网站(如如行)的体重,但可以拦截其他销量,并且可识别和阻止黑黑名.citrix建议您配置个通用,并配置更具体的策略以绕过某些流量。

客户端和代理建立 HTTPS/TLS握手。该代理与服务器建立另一个 HTTPS/TLS握手并接收服务器证书。代理代理代表客户端验证服务器证书,并使用联机证书状态协议 (OCSP)检查服务器证书的有效性。它会重新生成服务器证书,使用设备上安装的 加利福尼亚州证书的密钥对其进行签名,然后将其呈现给客户端。因此,在客户端和 Citrix ADC设备之间使用一个证书,在设备和后端服务器之间使用另一个证书。

重要

必须在所有客户端设备上预安装用于签署服务器证书的CA证书,以便客户端信任重新生成的服务器证书。

对于截获的HTTPS流量,代理服务器会解密出站流量,访问明文HTTP请求,并可以使用任何第7层应用程序来处理流量,例如查看纯文本URL以及根据公司策略和URL信誉允许或阻止访问。如果策略决策是允许访问源服务器,则代理服务器将重新加密的请求转发到目标服务(在源服务器上)。代理解密来自源服务器的响应,访问明文HTTP响应,并有选择地将任何策略应用于响应。然后,代理会重新加密响应并将其转发给客户端。如果策略决策是阻止对源服务器的请求,则代理可以向客户端发送错误响应,例如HTTP 403。

要执行 SSL拦截,除了先前配置的代理服务器外,还必须在 模数转换器设备上配置以下内容:

  • SSL配置文章
  • SSL策略
  • CA证书存储
  • SSL - 错误自动学院和缓存

注意: HTTP / 2流量不会被SSL拦截功能拦截。

SSL截获证书存储

SSL证书是任何ssl交易的一分,是标识公司(域)或或人的数码数码(例如verisign)由由行SSL事务的使用程序信息。这些这些用程序一个象征的CA列表。

作为转发代理,ADC设备执行客户端和服务器之间的流量的加密和解密。它充当客户端(用户)的服务器和服务器的客户端。设备在处理HTTPS流量之前,必须验证服务器的身份,以防止任何欺诈事务。因此,作为源服务器的客户端,设备必须先验证原始服务器证书,然后才能接受该证书。要验证服务器证书,设备上必须存在用于签名和颁发服务器证书的所有证书(例如,根证书和中间证书)。在设备上预安装了一组默认CA证书。设备可以使用这些证书来验证几乎所有常见的原始服务器证书。无法修改此默认集。但是,如果您的部署需要更多CA证书,则可以创建此类证书的捆绑包并将该捆绑包导入设备。捆绑包还可以包含单个证书。

将证书捆绑导入设备时,设备会从远程位置下载该捆绑包,并在验证捆绑包是否仅包含证书后,将其安装在设备上。必须先应用证书捆绑,然后才能使用它验证服务器证书。您还可以导出证书捆绑包以进行编辑或将其作为备份存储在脱机位置。

使用 CLI在设备上导入并应用 加利福尼亚州证书捆绑包

在命令提示符下,键入:

import ssl certBundle   apply ssl certBundle  
显示SSL CERTBUNDLE <! -  CACTCOPY  - >

参数

名称

要分配给导入的证书捆绑的名称。必须以 ASCII码字母数字或下划线 (_) 字符开头,并且必须仅包含 ASCII码字母数字、下划线、哈希 (#)、句点 (.)、空格、冒号 (:)、位于 (@)、等于 (=) 和连字符 (-)。以下要求仅适用于 CLI:

如果名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“我的文件”或“我的文件”)。

最大长度:31

src

指定要导入或导出的证书捆绑包的协议,主机和路径(包括文件名)的URL。例如http://www.example.com/cert_bundle_file.

注意:如果要导入的对象位于需要客户端证书身份验证才能访问的HTTPS服务器上,则导入失败。

最大长度:2047

例如

导入ssl certbundle swg-certbundle http://www.example.com/cert_bundle apply ssl certbundle swg-certbundle <! -  caltcopy  - >
show ssl certbundle Name: swg-certbundle(Inuse) URL: http://www.example.com/cert_bundle Done 

使用 桂在设备上导入和应用 加利福尼亚州证书捆绑包

  1. 导航到安全> SSL批发管理>入门>证书捆绑包
  2. 执行以下操作之一:
    • 从列表中选择证书捆绑包。
    • 要添加证书捆绑包,请单击“+”并指定名称和源URL。单击好吧(确定)。
  3. 单击好吧(确定)。

使用CLI从设备中删除CA证书捆绑包

在命令提示符下,键入:

删除certBundle  

例如

删除certBundle mytest-cacert 

使用CLI从设备导出CA证书捆绑包

在命令提示符下,键入:

export certBundle  <导出>的路径

参数

名称

要分配给导入的证书捆绑的名称。必须以 ASCII码字母数字或下划线 (_) 字符开头,并且必须仅包含 ASCII码字母数字、下划线、哈希 (#)、句点 (.)、空格、冒号 (:)、位于 (@)、等于 (=) 和连字符 (-)。以下要求仅适用于 CLI:

如果名称包含一个或多个空格,请将名称用双引号或单引号括起来(例如,“我的文件”或“我的文件”)。

最大长度:31

src

指定要导入或导出的证书捆绑包的协议,主机和路径(包括文件名)的URL。例如http://www.example.com/cert_bundle_file.

注意:如果要导入的对象位于需要客户端证书身份验证才能访问的HTTPS服务器上,则导入失败。

最大长度:2047

例如

export certBundle mytest-cacert http://192.0.2.20/ 

从mozilla ca证书存储中导入,使用和验证ca证证绑包

在命令提示符下,键入:

> import certbundle mozilla_public_ca https://curl.haxx.se/ca/cacert.pem完成

要应用捆绑包,请键入:

> apply certbundle mozilla_public_ca Done 

要验证正在展出的证书捆捆,请键入:

>sh certbundle | grep mozilla名称:mozilla_public_ca(Inuse)<!--NeedCopy-->

限制

  • 群集设置中或分区的设备上不支持证书捆绑包。
  • SSL转发代理不支持TLSv1.3协议。

用来SSL截获的SSL策略基础结构

策略的作用类似于对传入流量进行筛选。ADC设备上的策略有助于定义如何管理代理连接和请求。处理基于为该策略配置的操作。也就是说,将连接请求中的数据与策略中指定的规则进行比较,并将操作应用于匹配规则(表达式)的连接。定义要分配给策略的操作并创建策略后,您必须将其绑定到代理服务器,以便将其应用于流经该代理服务器的流量。

SSL截获SSL策略会评估传入流量,并对与规则(表达式)匹配的请求应用预定义的操作。截取,绕过或重置连接的决定是根据定义的SSL策略做出的。您可以为策略配置三个操作之一-拦截、绕过或重置。您必须在创建策略时指定操作。要使策略生效,您必须将其绑定到设备上的代理服务器。要指定策略专用于SSL截获,在将策略绑定到代理服务器时,必须将类型(绑定点)指定为INTERCEPT_REQ。取消绑定策略时,必须将类型指定为TACT_REQ。

注意

除非您指定策略,否则代理服务器无法决定拦截。

流量拦截可以基于任何SSL握手属性。最常用的是SSL域。SSL域通常由 SSL 握手的属性表示。它可以是从 SSL 客户端 Hello 消息中提取的服务器名称指示器值(如果存在),也可以是从源服务器证书中提取的服务器备用名称 (SAN) 值。SSL 拦截策略提供了一个特殊属性,即 DETECTED_DOMAIN。此属性使客户可以更轻松地根据源服务器证书中的 SSL 域创作拦截策略。客户可以将域名与字符串、URL 列表(URL 集或patset)或从域派生的URL类别进行匹配。

使用 CLI创建 SSL策略

在命令提示符下,键入:

添加SSL策略 -rule  -action  

示例

以下示例适用于具有使用detected_domain属性检查域名的表达式的策略。

不要拦截到金融机构(如XYZBank)的流量

添加SSL策略pol1 -rule client.ssl.detected_domain.Contains(“XYZBANK”) -  Acction Bypass <! -  CentCopy  - >

不允许用户从企业网络连接到YouTube

add ssl policy pol2 -rule client.ssl.client.ssl.detected_domain.url_categorize(0,0).category.eq ("YouTube") -action RESET 

拦截所有用户流量

添加ssl策略pol3–规则为真–操作拦截<!--NeedCopy-->

如果客户不夹使用已检测的_domain,他们可口使用任何ssl握手属性来提取和推断域。

例如,在客户端 你好消息的 SNI扩展中找不到域名。域名必须取自源服务器证书。以下示例适用于具有在源服务器证书的使用者名称中检查域名的表达式的策略。

拦截所有用户流量到任何雅虎域

add ssl policy pol4 -rule client.ssl.origin_server_cert.subject.contains("yahoo") -action INTERCEPT 

”拦截购物/零售”类别的所有用户流量

添加ssl策略pol\u url\u category-rule client.ssl.origin\u server\u cert.subject.url\u CATEGORIZE(0,0.category.eq(“购物/零售”)-操作拦截<!--NeedCopy-->

拦截所有用户流量到未分类的URL

add ssl policy pol_url_category -rule client.ssl.origin_server_cert.subject. url_category (0,0).category.eq(" unclassified ") -action INTERCEPT 

以下示例适用于将域与 统一资源定位地址集中的条目匹配的策略。

如果 SNI中的域名与 统一资源定位地址集 “前100名”中的条目匹配,则拦截所有用户流量

添加SSL策略pol_url_set -rule client.ssl.client_hello.sni.urlset_matches_any(“top100”)-action拦截<! -  caltcopy  - >

如果源服务器证书与URL集“巨鲸音乐网”中的条目匹配,则截取域名的所有用户流量

添加SSL策略pol_url_set -rule client.ssl.origin_server_cert.subject.urlset_matches_any(“top100”)-action拦截<! -  caltcopy  - >

通过使用GUI创建代理服务器的SSL策略

  1. 导航到交通管理(流量管理)> SSL>政策(策略)
  2. 在“SSL策略“选项卡上,单击”加加”并指定以下参数:
    • 策略名称
    • 策略操作,从拦截,绕过或重置中选择。
    • 表达式
  3. 单击创建

使用CLI将SSL策略绑定到代理服务器

在命令提示符下,键入:

绑定ssl vserver  -policyname  -priority  -type intercept_req <! -  caltcopy  - >

例如

bind ssl vserver  -policyName pol1 -priority 10 -type INTERCEPT_REQ 

使用GUI将SSL策略绑定到代理服务器

  1. 导航到安全 > SSL转发代理 > 代理虚拟服务器
  2. 选择虚拟服务器,然后单击编辑(编辑)。
  3. 高级设置中,单一SSL策略
  4. SSL策略框中单击。
  5. 在“选择策略“中,选择要绑定的策略。
  6. 类型中,选择拦截_REQ.
  7. 单击绑定,然后单击定。

使用CLI将SSL策略解除绑定到代理服务器

在命令提示符下,键入:

解除绑定ssl vserver-策略名称-键入INTERCEPT_REQ<!--NeedCopy-->

SSL策略中使用的 SSL表达式

表达式 说明
CLIENT.SSL.CLIENT_HELLO.SNI。* 以字符串格式返回SNI扩展名。评估字符串以查看它是否包含指定的文本。示例:client.ssl.client_hello.sni.contains (“xyz.com”
CLIENT.SSL.ORIGIN\u SERVER\u证书* 返回从后端服务器接收的字符串格式的证书。评估字符串以查看它是否包含指定的文本。示例:client.ssl.origin_server_cert.subject.contains (“xyz.com”
CLIENT.SSL.DETECTED_DOMAIN。* 从SNI扩展或源服务器证书返回字符串格式的域。评估字符串以查看它是否包含指定的文本。示例:client.ssl.detected_domain.contains (“xyz.com”

SSL错误自动学习

如果学习模式处于打开状态,设备会将域添加到SSL绕过列表中。学习模式基于从客户端或源服务器收到的SSL警报消息。也就是说,学习取决于客户端或服务器发送警报消息。如果未发送警报消息,则无法学习。设备将了解是否满足以下任一条件:

  1. 从服务器接收客户端证书的请求。

  2. 作为握手的一部分,会收到以下任何一个警报:

    • BAD_CERTIFICATE
    • 不支持的\u证书
    • 证书_revoked.
    • CERTIFICATE_EXPIRED
    • CERTIFICATE_UNKNOWN
    • UNKNOWN_CA(如果客户端使用固定,它会在收到服务器证书时发送此警报消息)。
    • HANDSHAKE_FAILURE

要启用学习,必须启用错误缓存并指定为学习预留的内存。

通过使用GUI启用学习

  1. 导航到流量管理 > SSL

  2. 在“设置“中,单击”更改高级 SSL设置“。

  3. SSL拦截中,选择SSL拦截错误缓存

  4. SSL拦截最大错误缓存内存中,指定指定要的内存(以字节为单位)。

    错误缓存

  5. 单击好吧(确定)。

使用CLI启用学学

在命令提示符下,键入:

set ssl parameter -ssliErrorCache (ENABLED | DISABLED) -ssliMaxErrorCacheMem  

参数

缓存

启用或禁用动态学习,并缓存学到的信息,以便后续决策拦截或绕过请求。启用后,设备将执行缓存查找以确定是否跳过请求。

可启用,已启用

默认值: 禁用

最大限度的误差

指定可用于缓存学习数据的最大内存(以字节为单位)。此内存用作LRU缓存,以便在设置的内存限制耗尽后将旧条目替换为新条目。值 0 会自动决定限制。

默认值:0

最小值:0

最大值:4294967294

SSL配置文章

SSL配置文件是SSL设置的综合性,如如和协议。如果如果具不锈料器的使用设置,则配置文件非常有用。不成文,而不作为每服务服务相同的设置。如果未创建自定义前端ssl配置文库,则则前端配置文件设置。

对于SSL拦截,您必须创建SSL配置文件并在配置文件中启用SSL拦截。默认密码组绑定到此配置文件,但您可以配置更多密码以适应您的部署。将SSL拦截CA证书绑定到此配置文件,然后将配置文件绑定到代理服务器。对于SSL拦截,配置文件中的基本参数是用于以下操作的参数:

  • 检查源检查源器证书的OCSP状态。
  • 如果源服务器请求重新协商,触发客户端重新协商。
  • 在重复使用前端SSL会话之前,请验证源服务器证书。

与源服务器通信时,请使用默认的后端配置文件。在默认后端配置文件中设置任何服务器端参数,例如密码套件。不支持自定义后端配置文件。

有关最常用SSL设置的示例,请参阅本部分末尾的“示例配置文件”。

内部和外部网络的密码/协议支持不同。在下表中,用户与 ADC 设备之间的连接是内部网络。外部网络位于设备和 Internet 之间。

SSL配置文件映像

表1:内部网站的密码/协议列表列表

请参阅Citrix ADC设备上提供的密码中虚拟服务器/前端服务/内部服务的表1支持。

表 2:外部网络的密码/协议支持列表

请参阅关于Citrix ADC制备上部的密码中的厚度的表2支持。

添加SSL配置文件并使用CLI启用SSL拦截

在命令提示符下,键入:

添加ssl配置文件 -sslintercept ENABLED -ssliReneg (ENABLED | DISABLED) -ssliOCSPCheck (ENABLED | DISABLED) -ssliMaxSessPerServer

参数

sslInterception

启用或禁用对 SSL会话的拦截。

可启用,已启用

默认值: 禁用

斯利利内斯

从源服务器收到重新协商请求时启用或禁用触发客户端重新协商。

可启用,已启用

默认值:启用

ssliOCSPCheck

启用或禁用OCSP检查原始服务器证书。

可启用,已启用

默认值:启用

sslimaxsessperserver

每个动态源服务器要缓存的最大SSL会话数。将为客户端你好消息中从客户端接收的每个SNI扩展创建一个唯一的SSL会话。匹配的会话用于服务器会话重用。

默认值:10

最小值:1

最大值:1000

例如

添加ssl配置swg_ssl_profile -sslinterception启用了sh ssl配置文件swg_ssl_profile 1)名称:swg_ssl_profile(前端)SSLv3:禁用TLSv1.0:启用TLSv1.1:启用TLSv1.2:启用客户机身份验证:禁用只使用CA证书绑定:禁用严格CA检查:没有会话重用:启用超时:120秒DH:DISABLED DH Private-Key expones Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0 Deny SSL Renegotiation ALL Non FIPS Cipher: DISABLED Cipher Redirect: DISABLED SSL Redirect: DISABLED Send Close-Notify: YES Strict Sig-Digest Check: DISABLED Push Encryption Trigger: Always Push Encryption Trigger timeout: 1 ms SNI:DISABLED OCSP Stapling: DISABLED Strict Host Header check for SNI enabled SSL会话:NO Push flag: 0x0 (Auto) SSL量子大小:8kb加密触发超时100ms加密触发包计数:45主题/发布者名称插入格式:Unicode SSL拦截:enabled SSL拦截OCSP检查:启用SSL拦截端到端重协商:启用SSL拦截服务器端证书验证客户端重用:启用SSL拦截每个服务器最大重用会话:10会话票据:禁用会话票据寿命:300 (secs) HSTS:禁用的HSTS包括ubdomains: NO HSTS Max-Age: 0 ECC曲线:P_256, P_384, P_224, P_521 1) Cipher Name: DEFAULT Priority:1 Description:预定义Cipher Alias Done 

使用CLI将ssl拦截ca证书绑定到ssl配置文件

在命令提示符下,键入:

绑定ssl配置文件 -ssliCACertkey . txt

例如

bind ssl profile swg_ssl_profile -ssliCACertkey swg_ca_cert Done sh ssl profile swg_ssl_profile 1) Name: swg_ssl_profile(前端)SSLv3: DISABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED Client Auth: DISABLED仅使用绑定的CA证书:DISABLED Strict CA检查:NO Session Reuse: ENABLED Timeout: 120 seconds DH:DISABLED DH Private-Key expones Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0 Deny SSL Renegotiation ALL Non FIPS Cipher: DISABLED Cipher Redirect: DISABLED SSL Redirect: DISABLED Send Close-Notify: YES Strict Sig-Digest Check: DISABLED Push Encryption Trigger: Always Push Encryption Trigger timeout: 1 ms SNI:DISABLED OCSP Stapling: DISABLED Strict Host Header check for SNI enabled SSL会话:NO Push flag: 0x0 (Auto) SSL量子大小:8kb加密触发超时100ms加密触发包计数:45主题/发布者名称插入格式:Unicode SSL拦截:enabled SSL拦截OCSP检查:启用SSL拦截端到端重协商:启用SSL拦截服务器端证书验证客户端重用:启用SSL拦截每个服务器最大重用会话:10会话票据:禁用会话票据寿命:300 (secs) HSTS:禁用的HSTS包括ubdomains: NO HSTS Max-Age: 0 ECC曲线:P_256, P_384, P_224, P_521 1)密码名:DEFAULT优先级:1描述:预定义密码别名1)SSL拦截CA CertKey Name: swg_ca_cert Done 

使用GUI将ssl拦截ca证书绑定到ssl配置文件

  1. 导航到系统>配置文件>SSL配置文件。

  2. 单击加加

  3. 指定配置文章的名字。

  4. 启用SSL会话拦截

  5. 单击好吧(确定)。

  6. 在“高级设置“中,单击”证书密钥“。

  7. 指定要绑定到配置文库的ssl拦截ca证书密钥。

  8. 单击选择,然后单击绑定

  9. 或者,配置密码以以您的部署。

    • 单击编辑图标,然后单击加加
    • 选择一个或多个密码组,然后单击向右箭头。
    • 单击好吧(确定)。
  10. 单击完成

使用GUI将SSL配置文件绑定到代理服务器

  1. 导航到”安全“>”SSL转发代理“>”代理虚拟服务器”,然后添加服务器或选择要修改的服务器。
  2. SSL配置文章中,单击编辑图标。
  3. SSL配置文章列表中,选择您之前创建的SSL配置文件。
  4. 单击好吧(确定)。
  5. 单击完成

样本配置文件

名称:swg_ssl_profile(前端)SSLv3: DISABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED Client Auth: DISABLED Use only bound CA certificates: DISABLED Strict CA checks: NO Session Reuse: ENABLED Timeout: 120 seconds DH: DISABLED DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count:0 Deny SSL Renegotiation ALL Non FIPS Cipher: DISABLED Cipher Redirect: DISABLED SSL Redirect: DISABLED Send Close-Notify: YES Strict Sig-Digest Check: DISABLED Push Encryption Trigger: Always Push Encryption Trigger timeout: 1 ms SNI: DISABLED OCSP Stapling: DISABLED Strict Host Header Check for SNI enabled SSL session: NO Push flag:0x0 (Auto) SSL量子大小:8kb加密触发超时100ms加密触发包数:45主题/发布者名称插入格式:Unicode SSL拦截:启用SSL拦截OCSP检查:启用SSL拦截端到端重协商:启用SSL拦截每服务器最大重用会话:10会话票据:DISABLED Session Ticket Lifetime: 300 (secs) HSTS: DISABLED HSTS inclesubdomains: NO HSTS Max-Age: 0 ECC Curve: P_256, P_384, P_224, P_521 1) Cipher Name: DEFAULT Priority:1 Description:预定义Cipher Alias 1) SSL intercept CA CertKey Name: swg_ca_cert 
SSL拦截