Citrix ADC

客户端身份验证

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

注意: 从版本 13.0 Biuld 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 位证书

注意: 从 13.0 版本 79.x 开始,在 VPX 平台上的 SSL 握手期间,支持使用 4096 位 RSA 客户端证书的客户端身份验证。

备注:

提供客户端证书

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

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

有关如何将证书从 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>
<!--NeedCopy-->

示例:

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
<!--NeedCopy-->

使用 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
<!--NeedCopy-->

使用 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 虚拟服务器

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

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

如果单个根 CA 颁发了有效的中间 CA 证书,Citrix ADC 设备将接受这些证书。也就是说,如果只有 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。但是,如果启用了 ClientauthuseBoundCachaon,Citrix ADC 设备只接受 clientcert1。

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

在命令提示符下,键入:

set ssl profile <name> -ClientAuthUseBoundCAChain Enabled
<!--NeedCopy-->

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

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