Citrix ADC

客户端证书身份验证

包含敏感内容的网站(例如网上银行网站或包含员工个人信息的网站)有时需要客户证书进行身份验证。若要配置身份验证、授权和审核以根据客户端证书属性对用户进行身份验证,请首先在流量管理虚拟服务器上启用客户端身份验证,然后将根证书绑定到身份验证虚拟服务器。然后,您实现两个选项之一。您可以将身份验证虚拟服务器上的默认身份验证类型配置为 CERT,也可以创建证书操作,该操作定义 Citrix ADC 必须执行哪些操作来根据客户端证书对用户进行身份验证。无论哪种情况,您的身份验证服务器都必须支持 CRL。您将 ADC 配置为从主题 CN 字段或客户端证书中的其他指定字段中提取用户名。

当用户尝试登录到未配置身份验证策略的身份验证虚拟服务器,并且未配置全局级联时,将从证书的指定字段中提取用户名信息。如果提取所需字段,则身份验证成功。如果用户在 SSL 握手期间未提供有效证书,或者用户名提取失败,则身份验证将失败。在验证客户端证书后,ADC 会向用户显示登录页面。

以下过程假定您已经创建了正常运行的身份验证、授权和审核配置,因此它们仅解释了如何使用客户端证书启用身份验证。这些过程还假定您已获得根证书和客户端证书,并将它们放置在 /nsconfig/ssl 目录中的 ADC 上。

配置客户端证书身份验证

使用命令行界面配置身份验证、授权和审核客户端证书参数

在命令提示符处,按所示顺序键入以下命令以配置证书并验证配置:

add ssl certKey <certkeyName> -cert <certFile> -key <keyFile> -password -inform <inform> -expiryMonitor <expiryMonitor> -notificationPeriod <notificationPeriod>

bind ssl certKey <certkeyName> -vServer <certkeyName> -CA -crlCheck Mandatory

show ssl certKey [<certkeyName>]

set aaa parameter -defaultAuthType CERT

show aaa parameter

set aaa certParams -userNameField "Subject:CN"

show aaa certParams
<!--NeedCopy-->

使用配置实用程序配置身份验证、授权和审核客户端证书参数

  1. 导航到安全 > AAA-应用程序流量 > 虚拟服务器。
  2. 在详细信息窗格中,选择要配置为处理客户端证书身份验证的虚拟服务器,然后单击 编辑。
  3. 在“配置”页上的“证书”下,单击向右箭头 (>) 以打开 CA Cert 密钥安装对话框。
  4. CA 证书密钥对 话框中,单击 插入。
  5. CA 证书密钥-SSL 证书 对话框中,单击 安装。
  6. Install Certificate(安装证书)对话框中,设置以下参数,其名称对应于 CLI 参数名称,如下所示:
    • 证书密钥对名称*— certkeyName
    • Certificate File Name(证书文件名称)—certFile
    • Key File Name(密钥文件名)—keyFile
    • Certificate Format(证书格式)—inform
    • Password(密码)—password
    • Certificate Bundle(证书包)— 捆绑包
    • Notify When Expires(到期时通知)—expiryMonitor
    • Notification Period(通知期限)—notificationPeriod
  7. 单击 “ 安装”,然后单击 “ 关闭”。
  8. 在“CA 证书密钥”对话框的“证书”列表中,选择根证书。
  9. 单击保存
  10. 单击 Back(返回)返回主配置屏幕。
  11. 导航到安全 > AAA-应用程序流量 > 策略 > 身份验证 > CERT
  12. 在详细信息窗格中,选择要配置以处理客户端证书身份验证的策略,然后单击“编辑”。
  13. 在“配置身份验证 CERT 策略”对话框的“服务器”下拉列表中,选择刚刚配置为处理客户端证书身份验证的虚拟服务器。
  14. 单击 OK(确定)。状态栏中将显示一条消息,指出配置已成功完成。

使用高级策略进行客户端证

下面是使用高级策略在 Citrix ADC 上配置客户端证书身份验证的步骤。

  1. 导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Virtual Servers(虚拟服务器)
  2. 在详细信息窗格中,选择要配置以处理客户端证书身份验证的虚拟服务器,然后单击 Edit(编辑)。

    注意 : 如果您为虚拟服务器导入了有效的 CA 证书和服务器证书,则可以跳过步骤 3 到步骤 10

  3. Configuration(配置)页面上的 Certificates(证书)下,单击 > 打开 CA Cert Key(CA 证书密钥)安装对话框。
  4. CA Cert Key(CA 证书密钥)对话框中,单击 Insert(插入)。
  5. CA Cert Key - SSL Certificates(CA 证书密钥 - SSL 证书)对话框中,单击 Install(安装)。
  6. Install Certificate(安装证书)对话框中,设置以下参数,其名称对应于 CLI 参数名称,如下所示:

    • Certificate-Key Pair Name(证书密钥对名称)—certkeyName
    • Certificate File Name(证书文件名称)—certFile
    • Key File Name(密钥文件名)—keyFile
    • Certificate Format(证书格式)—inform
    • Password(密码)—password
    • Certificate Bundle(证书包)— 捆绑包
    • Notify When Expires(到期时通知)—expiryMonitor
    • Notification Period(通知期限)—notificationPeriod
  7. 单击 Install(安装),然后单击“Close”(关闭)。
  8. CA Cert Key(CA 证书密钥)对话框中的“Certificate list”(证书列表)中,选择根证书。
  9. 单击保存
  10. 单击 Back(返回)返回主配置屏幕。
  11. 导航到 Security(安全)> AAA - Application Traffic(AAA - 应用程序流量)> Policies(策略)> Authentication(身份验证)> Advanced Policies(高级策略),然后选择 Policy(策略)。
  12. 在详细信息窗格中,执行以下操作之一:

    • 要创建新策略,请单击 Add(添加)。
    • 要修改某个现有策略,请选择该策略,然后单击 Edit(编辑)。
  13. Create Authentication Policy(创建身份验证策略)或 Configure Authentication Policy(配置身份验证策略)对话框中,键入或选择参数的值。

    • Name(名称)- 策略名称。无法对以前配置的策略进行更改。
    • Action Type(操作类型)- 选择证书
    • Action(操作)- 要与策略关联的身份验证操作(配置文件)。可以选择现有的身份验证操作,也可以单击加号并创建正确类型的新操作。
    • Log Action(日志操作)- 要与策略关联的审核操作。可以选择现有审核操作,也可以单击加号并创建新操作。
    • Expression(表达式)- 选择要应用指定操作的连接的规则。规则可以简单(“true”将选择所有流量),也可以复杂。可以通过以下方式输入表达式:先在“Expression”(表达式)窗口下方最左侧的下拉列表中选择表达式类型,然后直接在表达式文本区域中键入表达式,或者单击“Add”(添加)以打开“Add Expression”(添加表达式)对话框并使用其中的下拉列表来构造表达式。
    • Comment(注释)- 可以键入描述此身份验证策略将应用到的流量类型的注释。可选。
  14. 单击 Create(创建)或 OK(确定),然后单击 Close(关闭)。如果您创建了策略,该策略将显示在“Authentication Policies”(身份验证策略)和“Servers”(服务器)页面中。

客户端证书直通

现在可以将 Citrix ADC 配置为将客户端证书传递到需要客户端证书进行用户身份验证的受保护应用程序。ADC 首先对用户进行身份验证,然后将客户端证书插入请求并将其发送到应用程序。通过添加适当的 SSL 策略来配置此功能。

当用户提供客户端证书时,此功能的确切行为取决于 VPN 虚拟服务器的配置。

  • 如果 VPN 虚拟服务器配置为接受客户端证书但不需要这些证书,ADC 会将证书插入请求中,然后将请求转发给受保护的应用程序。
  • 如果 VPN 虚拟服务器禁用了客户端证书身份验证,则 ADC 会重新协商身份验证协议并重新对用户进行身份验证,然后再将客户端证书插入标头并将请求转发给受保护的应用程序。
  • 如果 VPN 虚拟服务器配置为要求客户端证书身份验证,ADC 将使用客户端证书对用户进行身份验证,然后在标头中插入证书并将请求转发给受保护的应用程序。

在所有这些情况下,您可以按如下方式配置客户端证书直通。

使用命令行界面创建和配置客户端证书直通

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

add vpn vserver <name> SSL <IP> 443
<!--NeedCopy-->

对于名称,请替换虚拟服务器的名称。名称必须包含一到 127 个 ASCII 字符,以字母或下划线 (_) 开头,并且只包含字母、数字和下划线、井号 (#)、句点 (.)、空格、冒号 (:)、at (@)、equals (=) 和连字符 (-)。对于 <IP>,请替换分配给虚拟服务器的 IP 地址。

set ssl vserver <name> -clientAuth ENABLED -clientCert <clientcert>
<!--NeedCopy-->

对于 <name>,替换刚创建的虚拟服务器的名称。对于 <clientCert>,请替换以下值之一:

  • 禁用-禁用 VPN 虚拟服务器上的客户端证书身份验证。
  • 强制性-将 VPN 虚拟服务器配置为要求客户端证书进行身份验证。
  • 选项-将 VPN 虚拟服务器配置为允许客户端证书身份验证,但不要求它。
bind vpn vserver <name> -policy local
<!--NeedCopy-->

对于 <name>,替换您创建的 VPN 虚拟服务器的名称。

bind vpn vserver <name> -policy cert
<!--NeedCopy-->

对于 <name>,替换您创建的 VPN 虚拟服务器的名称。

bind ssl vserver <name> -certkeyName <certkeyname>
<!--NeedCopy-->

对于 <name>,替换您创建的虚拟服务器的名称。对于 <certkeyName>,替换客户端证书密钥。

bind ssl vserver <name> -certkeyName <cacertkeyname> -CA -ocspCheck Optional
<!--NeedCopy-->

对于 <name>,替换您创建的虚拟服务器的名称。对于 <cacertkeyName>,替换 CA 证书密钥。

add ssl action <actname> -clientCert ENABLED -certHeader CLIENT-CERT
<!--NeedCopy-->

对于 <actname>,将名称替换 SSL 操作。

add ssl policy <polname> -rule true -action <actname>
<!--NeedCopy-->

对于 <polname>,将名称替换新的 SSL 策略。对于 <actname>,将刚创建的 SSL 操作的名称替换为。

bind ssl vserver <name> -policyName <polname> -priority 10
<!--NeedCopy-->

对于 <name>,替换 VPN 虚拟服务器的名称。

示例

add vpn vserver vs-certpassthru SSL 10.121.250.75 443
set ssl vserver vs-certpassthru -clientAuth ENABLED -clientCert optional
bind vpn vserver vs-certpassthru -policy local
bind vpn vserver vs-certpassthru -policy cert
bind ssl vserver vs-certpassthru -certkeyName mycertKey
bind ssl vserver vs-certpassthru -certkeyName mycertKey -CA -ocspCheck Optional
add ssl action act-certpassthru -clientCert ENABLED -certHeader CLIENT-CERT
add ssl policy pol-certpassthru -rule true -action act-certpassthru
bind ssl vserver vs-certpassthru -policyName pol-certpassthru -priority 10
<!--NeedCopy-->
客户端证书身份验证