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

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

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

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

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

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

    注意:

    如果已导入虚拟服务器的有效 CA 证书和服务器证书,则可以跳过 步骤 3 到步骤 10

  3. 配置页上的证书下,单击 > 以打开 CA 证书密钥安装对话框。
  4. CA 证书密钥对话框中,单击插入
  5. CA 证书密钥-SSL 证书对话框中,单击安装
  6. 在“安 装证书对话框中,设置以下参数,其名称与 CLI 参数名称对应,如所示:

    • 证书密钥对名称 — certKeyName
    • 证书文件名称 — certFile
    • 密钥文件名称 — keyFile
    • 证书格式 — inform
    • 密码-password
    • 证书捆绑包-bundle
    • 过期时通知 - expiryMonitor
    • 通知期 — notificationPeriod
  7. 单击安装,然后单击“关闭”。
  8. CA 证书密钥对话框中的“证书”列表中,选择根证书。
  9. 单击保存
  10. 单击返回返回到主配置屏幕。
  11. 导航到安全 > AAA-应用程序流量 > 策略 > 身份验证 > 高级策略,然后选择策略
  12. 在详细信息窗格中执行以下操作之一:

    • 要创建新策略,请单击添加
    • 要修改现有策略,请选择策略,然后单击编辑
  13. 创建身份验证策略配置身份验证策略对话框中,键入或选择参数的值。

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

客户端证书直通

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

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

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

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

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

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

add vpn vserver <name> SSL <IP> 443

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

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

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

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

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

bind vpn vserver <name> -policy cert

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

bind ssl vserver <name> -certkeyName <certkeyname>

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

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

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

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

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

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

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

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

对于 <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
客户端证书身份验证