客户端证书身份验证
包含敏感内容的网站,如网上银行网站或包含员工个人信息的网站,有时需要客户端证书进行认证。如果需要配置基于客户端证书属性进行用户认证、授权和审计,首先需要在流量管理虚拟服务器上启用客户端认证,并将根证书绑定到认证虚拟服务器上。然后,实现两个选项中的一个。您可以将身份验证虚拟服务器上的默认身份验证类型配置为CERT,或者您可以创建一个证书操作,该操作定义Citrix ADC必须根据客户端证书对用户进行身份验证。在这两种情况下,您的身份验证服务器必须支持crl。配置ADC以从客户机证书中的SubjectCN字段或另一个指定字段提取用户名。
当用户登录认证虚拟服务器时,如果没有配置认证策略和全局级联,则从证书的指定字段提取用户名信息。如果提取了所需的字段,则身份验证成功。如果用户在SSL握手过程中没有提供有效的证书,或者用户名提取失败,则身份验证失败。在验证客户端证书之后,ADC向用户显示一个登录页面。
下面的步骤假设您已经创建了一个有效的身份验证、授权和审计配置,因此仅说明如何使用客户端证书启用身份验证。这些过程还假定您已经获得了根证书和客户端证书,并将它们放置在ADC的/nsconfig/ssl目录中。
配置客户端证书认证
使用命令行配置客户端证书的认证、授权和审计参数
在命令提示符处,按所示顺序输入以下命令,以配置证书并验证配置:
add ssl certKey -cert -key -password -inform -expiryMonitor -notificationPeriod bind ssl certKey -vServer -CA -crlCheck必选show ssl certKey [] set aaa parameter -defaultAuthType CERT show aaa parameter set aaa certParams-userNameField "Subject:CN" show aaa certParams
使用配置实用程序配置身份验证、授权和审计客户端证书参数
- 导航到安全> AAA -应用流量>虚拟服务器。
- 在详细信息窗格中,选择要配置以处理客户端证书身份验证的虚拟服务器,然后单击编辑。
- 在配置页面,在证书,单击右箭头(>)打开CA证书密钥安装对话框。
- 在CA证书的关键对话框中,单击插入。
- 在CA Cert Key - SSL证书对话框中,单击安装。
- 在安装证书对话框中设置如下参数,参数名称与命令行参数名称对应,如下所示。
- * -certkeyName证书密钥对的名字
- 证书文件Name-certFile
- 密钥文件Name-keyFile
- 证书Format-inform
- Password-password
- 证书Bundle-bundle
- 通知当Expires-expiryMonitor
- 通知Period-notificationPeriod
- 点击安装,然后单击关闭.
- 在CA证书的关键对话框中证书列表,选择根证书。
- 点击保存.
- 点击回来返回主配置界面。
- 导航到安全> AAA -应用流量>策略>认证> CERT.
- 在详细信息窗格中,选择要配置的策略以处理客户端证书身份验证,然后单击编辑.
- 在配置认证CERT策略对话框的“服务器”下拉列表,选择刚才配置用于处理客户端证书身份验证的虚拟服务器。
- 点击好吧.状态栏中将出现一条消息,说明配置已成功完成。
使用高级策略进行客户端证书认证
下面是使用高级策略在Citrix ADC上配置客户端证书身份验证的步骤。
- 导航到安全> AAA -应用流量>虚拟服务器.
在详细信息窗格中,选择要配置以处理客户端证书身份验证的虚拟服务器,然后单击编辑.
注意:
如果已经为虚拟服务器导入了有效的CA证书和服务器证书,则可以跳过步骤3到步骤10.
- 在配置页面,在证书,点击>打开CA证书的关键安装对话框。
- 在CA证书的关键对话框中,单击插入.
- 在CA Cert Key - SSL证书对话框中,单击安装.
在安装证书对话框中设置如下参数,参数名称与命令行参数名称对应,如下所示。
- 证书密钥对Name-certkeyName
- 证书文件Name-certFile
- 密钥文件Name-keyFile
- 证书Format-inform
- Password-password
- 证书Bundle-bundle
- 通知当Expires-expiryMonitor
- 通知Period-notificationPeriod
- 点击安装,然后单击“关闭”。
- 在CA证书的关键对话框中,从“证书”列表中选择根证书。
- 点击保存.
- 点击回来返回主配置界面。
- 导航到安全> AAA -应用流量>策略>认证>高级策略,然后选择政策.
在详细信息窗格中执行下列操作之一:
- 单击,创建新策略添加.
- 如果需要修改已创建的策略,请选中已创建的策略,单击编辑.
在创建身份验证策略或配置身份验证策略对话框中,输入或选择参数的值。
- 名称—策略的名称。不能对先前配置的策略进行更改。
- 操作类型-选择“证书”
- 动作-与策略关联的认证动作(配置文件)。您可以选择一个现有的身份验证操作,或者单击加号并创建一个适当类型的新操作。
- 日志动作-关联策略的审计动作。您可以选择一个现有的审计操作,或者单击加号并创建一个新的操作。
- 表达式-选择要应用指定操作的连接的规则。规则可以是简单的(“true”选择所有流量),也可以是复杂的。您输入表达式首先选择表达式的类型在表达下最左边的下拉列表窗口中,然后通过键入你的表达直接表达文本区域,或通过点击添加打开添加表达式对话框,使用下拉列表来构建你的表情。)
- 注释—您可以键入注释,描述此认证策略将应用于的流量类型。可选的。
- 点击创建或好吧,然后单击关闭.如果您创建了一个策略,该策略将出现在“身份验证策略和服务器”页面中。
客户端证书直通
现在可以配置Citrix ADC,将客户端证书传递给需要客户端证书进行用户身份验证的受保护应用程序。ADC首先对用户进行身份验证,然后将客户端证书插入请求并将其发送给应用程序。可以通过添加适当的SSL策略来配置该特性。
用户提供客户端证书时,该特性的具体行为与VPN虚拟服务器的配置有关。
- 如果将VPN虚拟服务器配置为接受客户端证书但不需要它们,则ADC将证书插入请求,然后将请求转发给受保护的应用程序。
- 如果VPN虚拟服务器禁用了客户端证书认证,则ADC会重新协商认证协议,对用户进行重新认证,然后将客户端证书插入到头部,再将请求转发给受保护的应用程序。
- 如果将VPN虚拟服务器配置为需要客户端证书身份验证,则ADC使用客户端证书对用户进行身份验证,然后将证书插入到头中,并将请求转发给受保护的应用程序。
在所有这些情况下,按照如下方式配置客户端证书传递。
使用命令行接口创建并配置客户端证书直通
在命令提示符处,输入以下命令:
add vpn vserver SSL 443
为的名字,将虚拟服务器替换为名称。字符串长度为1 ~ 127个ASCII字符,以字母或“_”开头,只能包含字母、数字、“#”、“。”、“:”、“@”、“=”、“-”等字符。为< IP >
,替换分配给虚拟服务器的IP地址。
set ssl vserver -clientAuth ENABLED -clientCert
为<名称>
,替换刚才创建的虚拟服务器的名称。为< clientCert >
,替换下列值之一:
- disabled - disable VPN虚拟服务器客户端证书认证功能。
- 必选-配置VPN虚拟服务器要求验证客户端证书。
- 可选配置VPN虚拟服务器允许客户端证书认证,但不要求它。
绑定VPN vserver -policy local
为<名称>
,替换您创建的VPN虚拟服务器的名称。
绑定VPN vserver -policy cert
为<名称>
,替换您创建的VPN虚拟服务器的名称。
bind ssl vserver -certkeyName
为<名称>
,替换您创建的虚拟服务器的名称。为< certkeyName >
,替换客户端证书密钥。
bind ssl vserver -certkeyName -CA -ocspCheck可选
为<名称>
,替换您创建的虚拟服务器的名称。为< cacertkeyName >
,替换CA证书密钥。
add ssl action -clientCert ENABLED -certHeader CLIENT-CERT
为< actname >
,为SSL操作替换一个名称。
添加SSL策略 -rule true -action
为< polname >
,将新SSL策略替换为名称。为< actname >
,替换刚才创建的SSL操作的名称。
bind ssl vserver -policyName -priority 10
为<名称>
,替换VPN虚拟服务器的名称。
例子
添加vpn vserver vs-certpassthru SSL 10.121.250.75 443设置SSL vserver vs-certpassthru clientauth启用-clientCert可选结合vpn vserver vs-certpassthru当地政策结合vpn vserver vs-certpassthru政策cert结合SSL vserver vs-certpassthru -certkeyName mycertKey结合SSL vserver vs-certpassthru -certkeyName mycertKey ca -ocspCheck可选add ssl action act-certpassthru -clientCert ENABLED -certHeader CLIENT-CERT add ssl policy pol-certpassthru -rule true -action action -certpassthru bind ssl vserver vs-certpassthru -policyName pol-certpassthru -priority 10