ADC

SSL 拦截

配置为 SSL 拦截的 NetScaler 设备充当代理。它可以拦截和解密 SSL/TLS 流量,检查未加密的请求,并使管理员能够强制执行合规性规则和安全检查。SSL 拦截使用的策略指定要拦截、阻止或允许哪些流量。例如,不得拦截进出银行等金融网站的流量,但可以拦截其他流量,可以识别和屏蔽列入黑名单的网站。Citrix 建议您配置一个通用策略以拦截流量,并配置更具体的策略以绕过某些流量。

客户端和代理建立了 HTTPS/TLS 握手。代理与服务器再次建立 HTTPS/TLS 握手并接收服务器证书。代理代表客户端验证服务器证书,还使用在线证书状态协议 (OCSP) 检查服务器证书的有效性。它重新生成服务器证书,使用安装在设备上的 CA 证书的密钥对其进行签名,然后将其提供给客户端。因此,在客户端和 NetScaler 设备之间使用一个证书,在设备和后端服务器之间使用另一个证书。

重要

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

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

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

  • SSL 配置文件
  • SSL 策略
  • CA 证书存储
  • SSL 错误自动学习和缓存

注意:

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

SSL 拦截证书存储

SSL 证书是任何 SSL 交易的一部分,是一种数字数据表单 (X509),用于标识公司(域)或个人。SSL 证书由证书颁发机构 (CA) 颁发。CA 可以是私有的,也可以是公共的。由公共 CA 颁发的证书(例如 Verisign)受到进行 SSL 交易的应用程序的信任。这些应用程序维护着他们信任的 CA 列表。

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

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

使用 CLI 在设备上导入和应用 CA 证书包

在命令提示符下,键入:

import ssl certBundle <name> <src>
apply ssl certBundle <name>
<!--NeedCopy-->
show ssl certBundle
<!--NeedCopy-->

参数

名称:

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

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

最大长度:31

源代码

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

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

最大长度:2047

示例

import ssl certbundle swg-certbundle http://www.example.com/cert_bundle
apply ssl certBundle swg-certbundle
<!--NeedCopy-->
show ssl certbundle

            Name : swg-certbundle(Inuse)

            URL : http://www.example.com/cert_bundle

    Done
<!--NeedCopy-->

使用 GUI 在设备上导入和应用 CA 证书包

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

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

在命令提示符下,键入:

remove certBundle <cert bundle name>
<!--NeedCopy-->

示例

remove certBundle mytest-cacert
<!--NeedCopy-->

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

在命令提示符下,键入:

export certBundle <cert bundle name> <Path to export>
<!--NeedCopy-->

参数

名称:

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

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

最大长度:31

源代码

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

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

最大长度:2047

示例

export certBundle mytest-cacert http://192.0.2.20/
<!--NeedCopy-->

从 Mozilla CA 证书存储库导入、申请和验证 CA 证书包

在命令提示符下,键入:

> import certbundle mozilla_public_ca https://curl.haxx.se/ca/cacert.pem
Done
<!--NeedCopy-->

要应用该套装,请键入:

> apply certbundle mozilla_public_ca
Done
<!--NeedCopy-->

要验证正在使用的证书捆绑包,请键入:

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

限制

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

用于 SSL 拦截的 SSL 策略基础架构

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

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

注意

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

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

使用 CLI 创建 SSL 策略

在命令提示符下,键入:

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

示例

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

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

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

不允许用户从公司网络连接到 YouTube

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

拦截所有用户流量

add ssl policy pol3 –rule true –action INTERCEPT
<!--NeedCopy-->

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

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

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

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

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

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

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

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

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

如果 SNI 中的域名与 URL 集“top100”中的条目匹配,则拦截所有用户流量

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

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

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

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

  1. 导航到 Traffic Management(流量管理)> SSL > Policies(策略)
  2. SSL 策略 选项卡上,单击 添加 并指定以下参数:
    • 策略名称
    • 策略操作-从拦截、绕过或重置中进行选择。
    • 表达式
  3. 单击创建

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

在命令提示符下,键入:

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

示例

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

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

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

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

在命令提示符下,键入:

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

SSL 策略中使用的 SSL 表达式

表达式 说明
CLIENT.SSL.CLIENT_HELLO.SNI.* 以字符串格式返回 SNI 扩展名。评估字符串以查看其是否包含指定的文本。示例:client.ssl.client_hello.sni.contains(“xyz.com”)
CLIENT.SSL.ORIGIN_SERVER_CERT.* 以字符串格式返回从后端服务器收到的证书。评估字符串以查看其是否包含指定的文本。示例: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
    • UNSUPPORTED_CERTIFICATE
    • CERTIFICATE_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 <positive_integer>
<!--NeedCopy-->

参数

ssliErrorCache:

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

可能的值:ENABLED、DISABLED

默认值: 已禁用

最大限度的误差

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

默认值:0

最小值:0

最大值:4294967294

SSL 配置文件

SSL 配置文件是 SSL 设置的集合,例如密码和协议。如果您对不同的服务器有共同的设置,则配置文件会很有用。您可以创建配置文件,在配置文件中指定设置,然后将配置文件绑定到不同的服务器,而不是为每台服务器指定相同的设置。如果未创建自定义前端 SSL 配置文件,则默认前端配置文件将绑定到客户端实体。此配置文件使您可以配置用于管理客户端连接的设置。

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

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

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

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

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

SSL 个人资料图片

表 1:内部网络的密码/协议支持列表

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

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

请参阅关于 NetScaler 设备上提供的 Ciphers 中后端服务的表 2 支持。

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

在命令提示符下,键入:

add ssl profile <name> -sslinterception ENABLED -ssliReneg ( ENABLED | DISABLED ) -ssliOCSPCheck ( ENABLED | DISABLED ) -ssliMaxSessPerServer <positive_integer>

参数

SSL 拦截:

启用或禁用 SSL 会话拦截。

可能的值:ENABLED、DISABLED

默认值: 已禁用

ssliReneg:

启用或禁用在收到来自原始服务器的重新协商请求时触发客户端重新协商。

可能的值:ENABLED、DISABLED

默认值:ENABLED

ssliOCSPCheck:

启用或禁用 OCSP 对源服务器证书的检查。

可能的值:ENABLED、DISABLED

默认值:ENABLED

ssliMaxSessPerServer:

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

默认值:10

最小值:1

最大值:1000

示例

add ssl profile swg_ssl_profile  -sslinterception ENABLED

Done

sh ssl profile swg_ssl_profile

1)    Name: swg_ssl_profile (Front-End)

                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 Ciphers: 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 sessions:                   NO

                Push flag:            0x0 (Auto)

                SSL quantum size:                            8 kB

                Encryption trigger timeout           100 mS

                Encryption trigger packet count:               45

                Subject/Issuer Name Insertion Format: Unicode

                SSL Interception: ENABLED

                SSL Interception OCSP Check: ENABLED

                SSL Interception End to End Renegotiation: ENABLED

                SSL Interception Server Cert Verification for Client Reuse: ENABLED

                SSL Interception Maximum Reuse Sessions per Server:  10

                Session Ticket: DISABLED              Session Ticket Lifetime: 300 (secs)

                HSTS: DISABLED

                HSTS IncludeSubDomains: NO

                HSTS Max-Age: 0

                ECC Curve: P_256, P_384, P_224, P_521

1)            Cipher Name: DEFAULT Priority :1

                Description: Predefined Cipher Alias

Done
<!--NeedCopy-->

使用 CLI 将 SSL 拦截 CA 证书绑定到 SSL 配置文件

在命令提示符下,键入:

bind ssl profile <name> -ssliCACertkey <ssli-ca-cert>

示例

bind ssl profile swg_ssl_profile -ssliCACertkey swg_ca_cert

Done

sh ssl profile swg_ssl_profile

1)            Name: swg_ssl_profile (Front-End)

                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 Ciphers: 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 sessions:                   NO

                Push flag:            0x0 (Auto)

                SSL quantum size:                            8 kB

                Encryption trigger timeout           100 mS

                Encryption trigger packet count:               45

                Subject/Issuer Name Insertion Format: Unicode

                SSL Interception: ENABLED

                SSL Interception OCSP Check: ENABLED

                SSL Interception End to End Renegotiation: ENABLED

                SSL Interception Server Cert Verification for Client Reuse: ENABLED

                SSL Interception Maximum Reuse Sessions per Server:  10

                Session Ticket: DISABLED              Session Ticket Lifetime: 300 (secs)

                HSTS: DISABLED

                HSTS IncludeSubDomains: NO

                HSTS Max-Age: 0

                ECC Curve: P_256, P_384, P_224, P_521

1)            Cipher Name: DEFAULT Priority :1

                Description: Predefined Cipher Alias

1)            SSL Interception CA CertKey Name: swg_ca_cert

Done
<!--NeedCopy-->

使用 GUI 将 SSL 拦截 CA 证书绑定到 SSL 配置文件

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

  2. 单击添加

  3. 为配置文件指定名称。

  4. 启用 SSL 会话拦截

  5. 单击确定

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

  7. 指定要绑定到配置文件的 SSL 拦截 CA 证书密钥。

  8. 单击“选择”,然后单击“绑定”。

  9. (可选)配置密码以适合您的部署。

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

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

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

样本配置文件

Name: swg_ssl_profile (Front-End)

                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 Ciphers: 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 sessions:                   NO

                Push flag:            0x0 (Auto)

                SSL quantum size:                            8 kB

                Encryption trigger timeout           100 mS

                Encryption trigger packet count:               45

                Subject/Issuer Name Insertion Format: Unicode

                SSL Interception: ENABLED

                SSL Interception OCSP Check: ENABLED

                SSL Interception End to End Renegotiation: ENABLED

                SSL Interception Maximum Reuse Sessions per Server:  10

                Session Ticket: DISABLED              Session Ticket Lifetime: 300 (secs)

                HSTS: DISABLED

                HSTS IncludeSubDomains: NO

                HSTS Max-Age: 0

                ECC Curve: P_256, P_384, P_224, P_521

1)            Cipher Name: DEFAULT Priority :1

                Description: Predefined Cipher Alias

1)            SSL Interception CA CertKey Name: swg_ca_cert
<!--NeedCopy-->
SSL 拦截