Citrix ADC

客户端身份验证

在典型的 SSL 事务中,通过安全连接连接连接到服务器的客户端将检查服务器的有效性。为此,它会在启动 SSL 事务之前检查服务器的证书。但是,有时您可能希望将服务器配置为对连接到该服务器的客户端进行身份验证。

注意: 从版本 13.0 内部版本 41.x 中,Citrix ADC 设备支持证书请求消息,只要总大小在 32 KB 以内,这些消息分割成多个记录。之前,支持的最大大小为 16 KB,不支持碎片。

在 SSL 虚拟服务器上启用客户端身份验证后,Citrix ADC 设备会在 SSL 握手期间要求提供客户端证书。设备检查客户端提供的证书是否存在正常约束,例如颁发者签名和到期日期。

注意: 对于验证颁发者签名的设备,颁发客户端证书的 CA 的证书必须安装在设备上,并绑定到客户端正在与之进行交易的虚拟服务器。

如果证书有效,设备将允许客户端访问所有安全资源。但是,如果证书无效,设备会在 SSL 握手期间删除客户端请求。

设备通过首先形成证书链来验证客户端证书,从客户端证书开始,以客户端的根 CA 证书(例如,威瑞信)结束。根 CA 证书可能包含一个或多个中间 CA 证书(如果根 CA 不直接颁发客户端证书)。

在 Citrix ADC 设备上启用客户端身份验证之前,请确保在客户端上安装了有效的客户端证书。然后,为处理事务的虚拟服务器启用客户端身份验证。最后,将颁发客户端证书的 CA 的证书绑定到设备上的虚拟服务器。

注意: Citrix ADC MPX 设备支持从 512 位到 4096 位的证书密钥对大小。必须使用以下哈希算法之一对证书进行签名:

  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512

在 SDX 设备上,如果将 SSL 芯片分配给 VPX 实例,则应用 MPX 设备的证书密钥对大小支持。否则,将适用 VPX 实例的正常证书密钥对大小支持。

Citrix ADC 虚拟设备(VPX 实例)支持至少 512 位的证书,最多具有以下大小:

  • 虚拟服务器上的 4096 位服务器证书
  • 服务上的 4096 位客户端证书
  • 4096 位 CA 证书
  • 物理服务器上的 4096 位证书
  • 2048 位客户端证书(如果在虚拟服务器上启用了客户端身份验证)

备注:

提供客户端证书

配置客户端身份验证之前,必须在客户端上安装有效的客户端证书。客户端证书包括与 Citrix ADC 设备创建安全会话的特定客户端系统的详细信息。每个客户端证书都是唯一的,只能由一个客户端系统使用。

无论是从 CA 获取客户端证书、使用现有客户端证书还是在 Citrix ADC 设备上生成客户端证书,都必须将证书转换为正确的格式。在 Citrix ADC 设备上,证书以 PEM 或 DER 格式存储,必须转换为 PKCS #12 格式,然后才能将证书安装在客户端系统上。转换证书并将其传输到客户端系统后,请确保该证书已安装在该系统上并为将成为 SSL 事务一部分的客户端应用程序(例如,Web 浏览器)进行配置。

有关如何将证书从 PEM 或 DER 格式转换为 PKCS #12 格式的说明,请参阅导入和转换 SSL 文件

有关如何生成客户端证书的说明,请参阅创建证书

启用基于客户端证书的身份验证

默认情况下,在 Citrix ADC 设备上禁用客户端身份验证,并且所有 SSL 事务都在不对客户端进行身份验证的情况下继续进行。作为 SSL 握手的一部分,您可以将客户端身份验证配置为可选或强制。

如果客户端身份验证是可选的,则设备会请求客户端证书,但即使客户端出现了无效的证书,也会继续进行 SSL 事务。如果客户端身份验证是强制性的,则如果 SSL 客户端未提供有效的证书,设备将终止 SSL 握手。

警告: Citrix 建议您先定义正确的访问控制策略,然后再将基于客户端证书的身份验证检查更改为可选。

注意: 客户端身份验证是针对单个 SSL 虚拟服务器配置的,而不是全局。

使用 CLI 启用基于客户端证书的身份验证

在命令提示符下,键入以下命令以启用基于客户端证书的身份验证并验证配置:

set ssl vserver <vServerName> [-clientAuth (ENABLED | DISABLED)] [-clientCert (MANDATORY | OPTIONAL)]
show ssl vserver <vServerName>

示例:

set ssl vserver vssl -clientAuth ENABLED -clientCert Mandatory
Done
show ssl vserver vssl

Advanced SSL configuration for VServer vssl:
DH: 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: DISABLED
        OCSP Stapling: DISABLED
        HSTS: DISABLED
        HSTS IncludeSubDomains: NO
        HSTS Max-Age: 0
SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.2: ENABLED TLSv1.2: ENABLED

1) CertKey Name: sslckey Server Certificate

1) Policy Name: client_cert_policy Priority: 0

1) Cipher Name: DEFAULT
Description: Predefined Cipher Alias
Done

使用 GUI 启用基于客户端证书的身份验证

  1. 导航到流量管理”>“负载平衡”>“虚拟服务器,然后打开虚拟服务器。
  2. 在“SSL 参数”部分中,选择“客户端身份验证”,然后在“客户端证书”列表中选择“强制”。

注意:

如果客户端身份验证设置为强制,并且客户端证书包含策略扩展,则证书验证将失败。从版本 12.0-56.x 中,您可以在前端 SSL 配置文件中设置一个参数以跳过此检查。默认情况下,该参数处于禁用状态。也就是说,默认情况下执行检查。

使用 CLI 在客户端身份验证期间跳过策略扩展检查

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

set ssl profile ns_default_ssl_profile_frontend -clientauth ENABLED -skipClientCertPolicyCheck ENABLED

Parameter

skipClientCertPolicyCheck

              Control policy extension check, if present inside the X509 certificate chain. Applicable only if client authentication is enabled and client certificate is set to mandatory. Possible values functions as follows:

- ENABLED: Skip the policy check during client authentication.

- DISABLED: Perform policy check during client authentication.

Possible values: ENABLED, DISABLED

Default: DISABLED

使用 GUI 在客户端身份验证期间跳过策略扩展检查

  1. 导航到系统 > 配置文件 > SSL 配置文件
  2. 创建新的前端配置文件或编辑现有的前端配置文件。
  3. 验证是否已启用客户端身份验证,并将客户端证书设置为强制。
  4. 选择 跳过客户端证书策略检查

跳过证书策略检查

将 CA 证书绑定到虚拟服务器

Citrix ADC 设备上存在证书的 CA 必须颁发用于客户端身份验证的客户端证书。将此证书绑定到执行客户端身份验证的 Citrix ADC 虚拟服务器。

将 CA 证书绑定到 SSL 虚拟服务器,这样设备就可以在验证客户端证书时形成完整的证书链。否则,证书链形成失败,并且即使其证书有效,客户端也会被拒绝访问。

您可以按任意顺序将 CA 证书绑定到 SSL 虚拟服务器。设备在客户端证书验证期间形成正确的顺序。

例如,如果客户端提供由 CA_A颁发的证书,其中 CA_A 是一个中间 CA,其证书由 CA_B颁发,其证书又由受信任的根 CA Root_ca颁发,该证书包含所有这三个证书都必须绑定到 Citrix ADC 设备上的虚拟服务器。

有关将一个或多个证书绑定到虚拟服务器的说明,请参阅将证书密钥对绑定到 SSL 虚拟服务器

有关创建证书链的说明,请参阅创建证书链

对客户端证书验证进行更严格的控制

如果由单个 Root-CA 颁发,Citrix ADC 设备将接受有效的中间 CA 证书。也就是说,如果只有 Root-CA 证书绑定到虚拟服务器,并且随客户端证书发送的任何中间证书都由该 Root-CA 验证,则设备信任证书链,并且握手成功。

但是,如果客户端在握手中发送证书链,则除非该证书绑定到 SSL 虚拟服务器,否则无法使用 CRL 或 OCSP 响应程序验证任何中间证书。因此,即使其中一个中间证书被吊销,握手也是成功的。作为握手的一部分,SSL 虚拟服务器发送绑定到它的 CA 证书的列表。为了更严格的控制,可以将 SSL 虚拟服务器配置为仅接受由绑定到该虚拟服务器的 CA 证书之一签名的证书。若要执行此操作,您必须启用绑定到虚拟服务器的 SSL 配置文件中的 ClientAuthUseBoundCAChain 设置。如果客户端证书未由绑定到虚拟服务器的 CA 证书之一签名,则握手将失败。

例如,假设两个客户端证书,即 clientcert1 和 clientcert2,分别由中间证书 INT-CA-A 和 INT-CA-B 签名。中间证书由根证书根 CA 签名。Int-CA-A 和 Root-CA 绑定到 SSL 虚拟服务器。在默认情况下(禁用 ClientAuthUseBoundCAChain),接受 clientcert1 和 clientcert2。但是,如果启用了客户端边界,Citrix ADC 设备将仅接受客户端 1。

使用 CLI 启用对客户端证书验证的更严格的控制

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

set ssl profile <name> -ClientAuthUseBoundCAChain Enabled

使用 GUI 对客户端证书验证进行更严格的控制

  1. 导航到系统 > 置文件”,选择SSL 配置文 件”选项卡,然后创建 SSL 配置文件,或选择现有配置文件。
  2. 选择使用绑定 CA 链启用客户端身份验证

客户端身份验证