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

策略的作用方式类似于传入通信的过滤器。Citrix Secure Web Gateway (SWG) 设备上的策略可帮助定义如何管理代理连接和请求。处理过程基于为该策略配置的操作。也就是说, 连接请求中的数据将与在策略中指定的规则相比较, 该操作将应用于与规则 (表达式) 匹配的连接。定义要分配给策略的操作并创建策略后, 必须将其绑定到代理服务器, 以便将其应用到通过该代理服务器流出的流量。

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

注意

除非指定了策略, 否则代理服务器将无法决定截获。

流量截获可以基于任意 SSL 握手属性。最常使用的是 SSL 域。SSL 域通常由 SSL 握手的属性指示。可以是从 SSL 客户端 Hello 消息 (如果存在) 提取的服务器名称指示器值, 或者从原始服务器证书提取的服务器替换名称 (SAN) 值。Citrix SWG 上的 SSLi 策略提供了一个名为 DETECTED_DOMAIN 的特殊属性, 使客户能够更加轻松地根据 SSL 域 (来源服务器证书) 创作侦听策略。客户可以根据字符串、URL 列表 (URL set 或 patset) 或从域派生的 URL 类别匹配域名。

使用 Citrix SWG CLI 创建 SSL 策略

在命令提示窗口中,键入:

add ssl policy <name> -rule <expression> -action <string>

示例:

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

请勿截获金融机构 (如 XYZBANK) 的流量。

add ssl policy pol1 -rule client.ssl.detected_domain.contains("XYZBANK") -action BYPASS

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

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

截获所有用户流量

add ssl policy pol3 –rule true –action INTERCEPT

如果客户不希望使用 detected_domain, 则可以使用任何 SSL 握手属性提取并推断域。

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

截获所有用户对所有 Yahoo 域的通信

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

截获 “网上购物/零售” 类别的所有用户流量

add ssl policy pol_url_category -rule client.ssl. origin_server_cert.subject.URL_CATEGORIZE(0,0).CATEGORY.eq("Shopping/Retail") -action INTERCEPT

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

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

以下示例适用于将域与 URL 集中的条目相匹配的策略。

如果 SNI 中的域名与 URL 设置为 “top100” 的条目一致, 则截获所有用户流量

add ssl policy pol_url_set  -rule client.ssl.client_hello.SNI.URLSET_MATCHES_ANY("top100") -action INTERCEPT

如果原始服务器证书与 URL 设置为 “top100” 的条目相匹配, 则截获域名的所有用户流量

add ssl policy pol_url_set  -rule client.ssl.origin_server_cert.subject.URLSET_MATCHES_ANY("top100") -action INTERCEPT

使用 Citrix SWG GUI 为代理服务器创建 SSL 策略

  1. 导航到Secure Web Gateway > SSL >策略
  2. 在 “ SSL 策略” 选项卡上, 单击添加并指定以下参数:
    • 策略名称
    • 策略操作 – 从截获、跳过或重置中进行选择。
    • Expresssion
  3. 单击创建

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

在命令提示窗口中,键入:

bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type  INTERCEPT_REQ

示例:

bind ssl vserver <name> -policyName pol1 -priority 10 -type INTERCEPT_REQ

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

  1. 导航到Secure Web Gateway >代理虚拟服务器
  2. 选择虚拟服务器, 然后单击Edit (编辑)。
  3. 在 “高级设置” 中, 单击SSL 策略
  4. 在 “ SSL 策略” 框中单击。
  5. Select policy (选择策略) 中, 选择要绑定的策略。
  6. Type (类型) 中, 选择INTERCEPT_REQ
  7. 单击Bind (绑定), 然后单击OK (确定)。

使用命令行将 SSL 策略拆散至代理服务器

在命令提示窗口中,键入:

unbind ssl vserver <vServerName> -policyName <string> -type INTERCEPT_REQ

用于 SWG 的 SSL 策略中使用的 SSL 表达式

表达式 说明
CLIENT.SSL.CLIENT_HELLO.SNI.* 返回字符串格式的 SNI 扩展。评估字符串以查看其是否包含指定的文本。示例: client_hello ("xyz.com")。
CLIENT.SSL.ORIGIN_SERVER_CERT.* 返回从后端服务器接收的、采用字符串格式的证书。评估字符串以查看其是否包含指定的文本。示例: origin_server_cert ("xyz.com")。
CLIENT.SSL.DETECTED_DOMAIN.* 从 SNI 扩展或从原始服务器证书返回一个字符串格式的域。评估字符串以查看其是否包含指定的文本。示例: detected_domain ("xyz.com")