ADC
感谢您提供反馈

这篇文章已经过机器翻译.放弃

SSL 内置操作和用户定义的操作

除非您只需要策略中的内置操作,否则您必须在创建策略之前创建操作。然后,您可以在创建策略时指定操作。内置操作有两种类型:控制操作和数据操作。您可以在控制策略中使用控制操作,在数据策略中使用数据操作。

内置的控制操作是:

  • 多客户端-执行客户端证书身份验证。(TLS1.3 不支持)
  • NOCLIENTAUTH — 不执行客户端证书身份验证。(TLS1.3 不支持)

内置的数据操作是:

  • 重置-通过向客户端发送 RST 数据包来关闭连接。
  • drop-从客户端删除所有数据包。连接保持打开状态,直到客户端关闭它。
  • NOOP-转发数据包而不对其执行任何操作。

注意: TLS 1.3 协议不支持客户端身份验证的任何相关操作,例如 ClientCertRiscoity 和 sslLogProfile。

您可以创建用户定义的数据操作。如果启用客户端身份验证,则可以创建 SSL 操作,以便在将请求转发到 Web 服务器之前将客户端证书数据插入到请求标头。

如果策略评估导致未定义状态,则执行 UNDEF 操作。对于数据策略或控制策略,您可以将 RESET、DROP 或 NOOP 指定为 UNDEF 操作。对于控制策略,您还可以选择指定 DOCLIENTAUTH 或 NOCLIENTAUTH。

策略中的内置操作示例

在以下示例中,如果客户端发送的密码不是 EXPORT 类别密码,Citrix ADC 设备将请求客户端身份验证。客户端必须为成功的交易提供有效证书。

add ssl policy pol1 -rule CLIENT.SSL.CIPHER_EXPORTABLE.NOT -reqAction DOCLIENTAUTH

以下示例假定已启用客户端身份验证。

如果用户提供的证书中的版本与策略中的版本匹配,则不会执行任何操作并转发数据包:

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction NOOP

如果用户提供的证书中的版本与策略中的版本匹配,则连接将被删除:

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction DROP

如果用户提供的证书中的版本与策略中的版本匹配,则重置连接:

add ssl policy pol1 -rule CLIENT.SSL.CLIENT_CERT.VERSION.EQ(2) -reqAction RESET

基于策略的客户端身份验证客户端证书验证

配置基于策略的客户端身份验证时,可以将客户端证书验证设置为强制或选项。默认值是强制性的。

使用 CLI 将客户端证书验证设置为可选的

在命令提示符下,键入:

add ssl action <name> ((-clientAuth ( DOCLIENTAUTH | NOCLIENTAUTH ) [-clientCertVerification ( Mandatory | Optional )]

示例:

add ssl action sslact -clientauth DOCLIENTAUTH -clientcertverification OPTIONAL

使用 GUI 将客户端证书验证设置为可选的

  1. 导航到 Traffic Management(流量管理)> SSL > Policies(策略)

  2. SSL 操作 选项卡上,单击 添加

  3. 指定名称,然后在“客户端证书验证”列表中选择“可选”。

用户定义的 SSL 操作

除了内置操作之外,您还可以根据部署配置其他 SSL 操作。这些操作称为用户定义的操作。

使用 CLI 配置用户定义的 SSL 操作

在命令提示符下,键入以下命令以配置操作并验证配置:

add SSL action <name> -clientAuth(DOCLIENTAUTH | NOCLIENTAUTH) -clientCert (ENABLED | DISABLED) certHeader <string> -clientHeader <string> -clientCertSerialNumber (ENABLED | DISABLED) -certSerialHeader <string> -clientCertSubject (ENABLED | DISABLED) -certSubjectHeader <string> -clientCertHash (ENABLED | DISABLED) -certHashHeader <string> -clientCertIssuer (ENABLED | DISABLED) -certIssuerHeader <string> -sessionID (ENABLED | DISABLED) -sessionIDheader <string> -cipher (ENABLED | DISABLED) -cipherHeader <string> -clientCertNotBefore (ENABLED | DISABLED) -certNotBeforeHeader <string> -clientCertNotAfter (ENABLED | DISABLED) -certNotAfterHeader <string> -OWASupport (ENABLED | DISABLED)
show ssl action [<name>]

示例:

add ssl action Action-SSL-ClientCert -clientCert ENABLED -certHeader "X-Client-Cert"
show ssl action Action-SSL-ClientCert 1) Name: Action-SSL-ClientCert Data Insertion Action: Cert Header: ENABLED Cert Tag: X-Client-Cert Done

使用 GUI 配置用户定义的 SSL 操作

导航到 流量管理 > SSL > 策略 ,然后在 作选项卡上单击 添加

配置 SSL 操作以将客户端流量转发到另一个虚拟服务器

管理员可以配置 SSL 操作,将 SSL 虚拟服务器上收到的客户端流量转发到另一个虚拟服务器,以避免 SSL 卸载。或用于终止 ADC 设备上的连接。此虚拟服务器可以是 SSL、TCP 或 SSL_BRIDGE。例如,如果出现以下任何情况,管理员可以选择将请求转发到另一个虚拟服务器进行进一步操作,而不是终止连接:

  • 设备没有证书。
  • 设备不支持特定的密码。

为了实现上述目标,添加了一个新的绑定点“CLIENTHELLO_REQ”,以便在收到客户端 hello 时评估客户端流量。如果在解析客户端 hello 后绑定到接收客户端流量的虚拟服务器的策略计算结果为 true,则流量将转发到另一个虚拟服务器。如果此虚拟服务器为 SSL 类型,则执行握手。如果此虚拟服务器类型为 TCP 或 SSL_Bridge,则后端服务器执行握手。

在 12.1-49.x 版中,只支持“CIENTHELLO_REQ”绑定点的转发和重置操作。以下表达式前缀可用:

  • CLIENT.SSL.CLIENT_HELLO.CIPHERS.HAS_HEXCODE
  • CLIENT.SSL.CLIENT_HELLO.CLIENT_VERSION
  • CLIENT.SSL.CLIENT_HELLO.IS_RENEGOTIATE
  • CLIENT.SSL.CLIENT_HELLO.IS_REUSE
  • CLIENT.SSL.CLIENT_HELLO.IS_SCSV
  • CLIENT.SSL.CLIENT_HELLO.IS_SESSION_TICKET
  • CLIENT.SSL.CLIENT_HELLO.LENGTH
  • CLIENT.SSL.CLIENT_HELLO.SNI
  • CLIENT.SSL.CLIENT_HELLO.ALPN.HAS_NEXTPROTOCOL(从版本 13.0 Build 61.x)

有关这些前缀的描述,请参阅 高级策略表达式:解析 SSL

将参数 forward 添加到 add SSL action 命令中,并将新绑定点 CLIENTHELLO_REQ 添加到 bind ssl vserver 命令中。

使用 CLI 进行配置

在命令提示符下,键入:

add ssl action <name> -forward <virtual server name> add ssl policy <name> -rule <expression> -action <string> bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type <type>

示例

add ssl action act1 -forward v2 add ssl policy pol1 -rule client.ssl.client_hello.ciphers.has_hexcode(0x002f) -action act1 bind ssl vserver v1 -policyName pol1 -priority 1 -type CLIENTHELLO_REQ

使用 GUI 进行配置

导航到 Traffic Management(流量管理)> SSL > Policies(策略)

创建 SSL 操作

  1. SSL 操作中,单击 添加
  2. 在“创建 SSL 操作”中,指定操作的名称。
  3. 在“转发操作虚拟服务器”中,选择现有虚拟服务器或添加新的虚拟服务器以将流量转发到。
  4. 或者,设置其他参数。
  5. 单击创建

创建 SSL 策略

  1. SSL 策略中,单击 添加
  2. 创建 SSL 策略中,指定策略的名称。
  3. 在“作”中,选择您之前创建的操作。
  4. 表达式编辑器中,输入要求计算的规则。
  5. 单击创建

创建或添加虚拟服务器和绑定策略

  1. 导航到 流量管理 > 负载平衡 > 虚拟服务器
  2. 添加或选择虚拟服务器。
  3. 高级设置中,单击 SSL 策略
  4. 单击 SSL 策略部分。
  5. 在“选择策略”中,选择您之前创建的策略。
  6. 策略绑定中,指定策略的优先级。
  7. 在“类型”中,选择“CLIENTHELLO_REQ”。
  8. 单击 Bind(绑定)。
  9. 单击完成

有关最常用的用例的端到端配置,请参阅以下主题:

基于 SNI 的 SSL 操作选择性选择 CA 进行客户端身份验证

您只能在客户端证书请求中发送基于 SNI(域)的 CA 列表,而不是绑定到 SSL 虚拟服务器的所有 CA 列表。例如,收到客户端 hello 时,仅发送基于 SSL 策略表达式(例如,SNI)的 CA 证书。要发送一组特定的证书,必须创建 CA 证书组。然后,将此组绑定到 SSL 操作,并将该操作绑定到 SSL 策略。如果在解析客户端 hello 后绑定到接收客户端流量的虚拟服务器的策略计算结果为 true,则仅在客户端请求证书中发送特定的 CA 证书组。

之前,您必须将 CA 证书绑定到 SSL 虚拟服务器。通过此增强功能,您可以简单地添加 CA 证书组并将其关联到 SSL 操作。

注意: 在 SSL 虚拟服务器上启用客户端身份验证和 SNI。将正确的 SNI 证书绑定到虚拟服务器。

执行以下步骤:

  1. 添加 CA 证书组。

  2. 添加证书密钥对。

  3. 将证书密钥对绑定到此组。

  4. 添加 SSL 操作。

  5. 添加 SSL 策略。在策略中指定操作。

  6. 将策略绑定到 SSL 虚拟服务器。将绑定点指定为 CLIENTHELLO_REQ。

使用 CLI 进行配置

在命令提示符下,按顺序键入以下命令:

add ssl caCertGroup <caCertGroupName> add ssl certkey <certkey_name> -cert <cert> -key <key> bind ssl caCertGroup <caCertGroupName> <certkey_name> add ssl action <name> -caCertGrpName <string> add ssl policy <name> -rule <expression> -action <string> bind ssl vserver <vServerName> -policyName <string> -priority <positive_integer> -type CLIENTHELLO_REQ

示例:

add ssl cacertGroup ca_cert_group add ssl certkey ca_certkey1 -cert cacert1 -key cakey1 add ssl certkey ca_certkey2 -cert cacert2 -key cakey2 add ssl certkey snicert -cert snicert -key snikey bind ssl cacertGroup ca_cert_group ca_certkey1 bind ssl caCertGroup ca_cert_group ca_certkey2
sh ssl caCertGroup ca_cert_group CA GROUP NAME: ca_cert_group ACTIONS REFERRING: 1 1) CertKey Name: ca_certkey1 CA Certificate CRLCheck: Optional CA_Name Sent 2) CertKey Name: ca_certkey2 CA Certificate CRLCheck: Optional CA_Name Sent
add ssl action pick_ca_group -cacertGrpName ca_cert_group
sh ssl action pick_ca_group 1) Name: pick_ca_group Type: Data Insertion PickCaCertGroup: ca_cert_group Hits: 0 Undef Hits: 0 Action Reference Count: 1
add ssl policy snipolicy -rule client.ssl.client_hello.sni.contains("abc") -action pick_ca_group bind ssl vserver v_SSL -policyName snipolicy -type CLIENTHELLO_REQ -priority 10
sh ssl policy snipolicy Name: snipolicy Rule: client.ssl.client_hello.sni.contains("abc") Action: pick_ca_group UndefAction: Use Global Hits: 0 Undef Hits: 0 Policy is bound to following entities 1) Bound to: CLIENTHELLO_REQ VSERVER v_SSL Priority: 10
set ssl vserver v_SSL -clientauth ENABLED -SNIEnable ENABLED bind ssl vserver v_SSL -certkeyName snicert -sniCert
sh ssl vserver v_SSL Advanced SSL configuration for VServer v_SSL: DH: DISABLED DH Private-Key Exponent Size Limit: DISABLED Ephemeral RSA: ENABLED Refresh Count: 0 Session Reuse: ENABLED Timeout: 120 seconds Cipher Redirect: DISABLED SSLv2 Redirect: DISABLED ClearText Port: 0 Client Auth: ENABLED Client Cert Required: Mandatory SSL Redirect: DISABLED Non FIPS Ciphers: DISABLED SNI: ENABLED OCSP Stapling: DISABLED HSTS: DISABLED HSTS IncludeSubDomains: NO HSTS Max-Age: 0 SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.1: ENABLED TLSv1.2: ENABLED TLSv1.3: DISABLED Push Encryption Trigger: Always Send Close-Notify: YES Strict Sig-Digest Check: DISABLED Zero RTT Early Data: DISABLED DHE Key Exchange With PSK: NO Tickets Per Authentication Context: 1 ECC Curve: P_256, P_384, P_224, P_521 1) CertKey Name: snicert Server Certificate for SNI Data policy 1) Policy Name: snipolicy Priority: 10 1) Cipher Name: DEFAULT Description: Default cipher list with encryption strength >= 128bit

使用 GUI 进行配置

创建 CA 证书组并将证书绑定到组

  1. 导航到 流量管理 > SSL > CA 证书组
  2. 单击“添加”并为组指定名称。
  3. 单击创建
  4. 选择 CA 证书组 ,然后单击 显示绑定
  5. 单击 Bind(绑定)。
  6. 在“CA 证书绑定”页面中,选择现有证书或单击“添加”以添加新证书。
  7. 单击 选择 ,然后单击 绑定
  8. 若要绑定另一个证书,请重复步骤 5 到 7。
  9. 单击关闭

导航到 Traffic Management(流量管理)> SSL > Policies(策略)

创建 SSL 操作

  1. SSL 操作中,单击 添加
  2. 在“创建 SSL 操作”中,指定操作的名称。
  3. 在“转发操作虚拟服务器”中,选择现有虚拟服务器或添加要将流量转发到的虚拟服务器。
  4. 或者,设置其他参数。
  5. 单击创建

创建 SSL 策略

  1. SSL 策略中,单击 添加
  2. 创建 SSL 策略中,指定策略的名称。
  3. 在“作”中,选择之前创建的操作。
  4. 表达式编辑器中,输入要求计算的规则。
  5. 单击创建

创建或添加虚拟服务器和绑定策略

  1. 导航到 流量管理 > 负载平衡 > 虚拟服务器
  2. 添加或选择虚拟服务器。
  3. 高级设置中,单击 SSL 策略
  4. 单击 SSL 策略部分。
  5. 在“选择策略”中,选择您之前创建的策略。
  6. 策略绑定中,指定策略的优先级。
  7. 在“类型”中,选择“CLIENTHELLO_REQ”。
  8. 单击 Bind(绑定)。
  9. 单击完成

使用 GUI 解除绑定 CA 证书组

  1. 导航到 流量管理 > SSL > CA 证书组
  2. 选择一个证书组,然后单击 显示绑定
  3. 选择要从组中删除的证书,然后单击“取 消绑定”。
  4. 如果提示进行确认,请单击“**是” • • 。
  5. 单击关闭

使用 GUI 删除 CA 证书组

  1. 导航到 流量管理 > SSL > CA 证书组
  2. 选择一个证书组,然后单击“删除”。
  3. 如果提示进行确认,请单击
本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。