Citrix ADC

客户端身份验证

在典型的SSL事务中,通过安全连接连接到服务器的客户机将检查服务器的有效性。为此,它在启动SSL事务之前检查服务器的证书。然而,有时您可能希望配置服务器来验证连接到它的客户机。

注:从release 13.0 build 41开始。,如果总大小在32 KB以内,则Citrix ADC设备支持分成多个记录的证书请求消息。早些时候,支持的最大大小是16 KB,不支持碎片。

在SSL虚拟服务器上启用了客户端身份验证,Citrix ADC设备在SSL握手期间要求客户端证书。设备检查客户端呈现的证书是否正常约束,例如发行人签名和过期日期。

注:对于要验证颁发者签名的设备,颁发客户端证书的CA的证书必须安装在设备上,并绑定到客户端正在处理的虚拟服务器。

如果证书有效,则设备允许客户端访问全部安全资源。但如果证书无效,则设备在SSL握手期间会下降客户端请求。

设备首先通过形成一个证书链来验证客户端证书,从客户端证书开始,到客户端根CA证书(例如Verisign)结束。根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 Build 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虚拟服务器配置的,而不是全局配置的。

1 .通过命令行开启基于客户端证书的认证

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

设置ssl vserver[-clientAuth(启用|禁用)][-clientCert(强制|可选)]显示ssl vserver<--需要复制-->

例子:

set ssl vserver vssl -clientAuth ENABLED -clientCert必选完成show ssl vserver vssl高级ssl配置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:强制SSL重定向:DISABLED Non FIPS Cipher: DISABLED SNI: DISABLED OCSP Stapling: DISABLED HSTS: DISABLED HSTS inclesubdomains: NO HSTS Max-Age: 0 SSLv2: DISABLED SSLv3: ENABLED TLSv1.0: ENABLED TLSv1.2: ENABLED TLSv1.2: ENABLED 1) CertKey Name: sslkey Server Certificate 1) Policy Name: client_cert_policy Priority: 0 1) Cipher Name:默认描述:预定义密码别名完成

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

  1. 引导到流量管理>负载均衡>虚拟服务器,并打开虚拟服务器。
  2. 在“SSL参数”部分中,选择“客户端身份验证”以及“客户端证书”列表中,选择“必填”。

注:

如果客户端身份验证设置为强制,且客户端证书包含策略扩展,则证书验证将失败。从12.0版本-56。x时,可通过在前端SSL配置文件中设置参数跳过此检查。默认为禁用。即在默认情况下执行检查。

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

在命令提示符处,输入:

set ssl profile ns_default_ssl_profile_frontend -clientauth ENABLED -skipClientCertPolicyCheck ENABLED参数skipClientCertPolicyCheck控制策略扩展检查,如果在X509证书链中存在。仅当启用客户端认证且设置为强制证书时适用。取值说明如下:—ENABLED:在客户端认证时跳过策略检查。—DISABLED:在客户端认证时进行策略检查。取值范围:ENABLED、DISABLED默认值: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虚拟服务器.

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

更严格控制客户端证书验证

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

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

例如,假设两个客户端证书clientcert1和clientcert2分别由中间证书Int-CA-A和Int-CA-B签名。中间证书由根证书“root - ca”签名。Int-CA-A和Root-CA绑定SSL虚拟服务器。在默认情况下(禁用clientauthuseboundcchain), clientcert1和clientcert2都被接受。但是,如果启用了clientauthuseboundacchain,则Citrix ADC设备只接受clientcert1。

通过使用CLI使客户端证书验证更严格控制

在命令提示符处,输入:

set ssl profile  - clientauthuseboundacchain Enabled 

使用GUI使客户端证书验证更严格控制

  1. 引导到系统>轮廓,选择SSL配置文件选项卡,并创建SSL配置文件,或选择现有配置文件。
  2. 选择使用绑定的CA链启用客户端认证.
客户端身份验证