Websites that contain sensitive content, such as online banking websites or websites with employee personal information, sometimes require client certificates for authentication.
To configure authentication, authorization, and auditing to authenticate users based on client-side certificate attributes, you first enable client authentication on the traffic management virtual server and bind the root certificate to the authentication virtual server. Then, you implement one of two options. You can configure the default authentication type on the authentication virtual server as CERT, or you can create a certificate action that defines what the Citrix ADC must do to authenticate users based on a client certificate. In either case, your authentication server must support CRLs. You configure the ADC to extract the user name from the SubjectCN field or another specified field in the client certificate.
When the user tries to log on to an authentication virtual server for which an authentication policy is not configured, and a global cascade is not configured, the user name information is extracted from the specified field of the certificate. If the required field is extracted, the authentication succeeds. If the user does not provide a valid certificate during the SSL handshake, or if the user name extraction fails, authentication fails. After it validates the client certificate, the ADC presents a logon page to the user.
The following procedures assume that you have already created a functioning authentication, authorization, and auditing configuration, and therefore they explain only how to enable authentication by using client certificates. These procedures also assume that you have obtained your root certificate and client certificates and have placed them on the ADC in the /nsconfig/ssl directory.
At the command prompt, type the following commands, in the order shown, to configure the certificate and verify the configuration:
Copy
add ssl certKey <certkeyName> -cert <certFile> -key <keyFile> -password -inform <inform> -expiryMonitor <expiryMonitor> -notificationPeriod <notificationPeriod> bind ssl certKey [<certkeyName>] [-ocspResponder <string>] [-priority <positive_integer>] show ssl certKey [<certkeyName>] set aaa parameter -defaultAuthType CERT show aaa parameter set aaa certParams -userNameField "Subject:CN" show aaa certParams
Following are the steps to configure client certificate authentication on Citrix ADC using advanced policies.
In the details pane, select the virtual server that you want to configure to handle client certificate authentication, and click Edit.
NOTE:
If you have imported a valid CA certificate and server certificate for the virtual server you can skip step 3 to step 10.
In the Install Certificate dialog box, set the following parameters, whose names correspond to the CLI parameter names as shown:
In the details pane do one of the following:
In the Create Authentication Policy or Configure Authentication Policy dialog box, type or select values for the parameters.
The Citrix ADC can now be configured to pass client certificates through to protected applications that require client certificates for user authentication. The ADC first authenticates the user, then inserts the client certificate into the request and sends it to the application. This feature is configured by adding appropriate SSL policies.
The exact behavior of this feature when a user presents a client certificate depends upon the configuration of the VPN virtual server.
In all of these cases, you configure the client certificate pass-through as follows.
At the command prompt, type the following commands:
Copy
add vpn vserver <name> SSL <IP> 443
For name, substitute a name for the virtual server. The name must contain from one to 127 ASCII characters, beginning with a letter or underscore (_), and containing only letters, numbers, and the underscore, hash (#), period (.), space, colon (:), at (@), equals (=), and hyphen (-) characters. For <IP>
, substitute the IP address assigned to the virtual server.
Copy
set ssl vserver <name> -clientAuth ENABLED -clientCert <clientcert>
For <name>
, substitute the name of the virtual server that you created. For <clientCert>
, substitute one of the following values:
Copy
bind vpn vserver <name> -policy local
For <name>
, replace the name of the VPN virtual server that you created.
Copy
bind vpn vserver <name> -policy cert
For <name>
, substitute the name of the VPN virtual server that you created.
Copy
bind ssl vserver <name> -certkeyName <certkeyname>
For <name>
, substitute the name of the virtual server that you created. For <certkeyName>
, substitute the client certificate key.
Copy
bind ssl vserver <name> -certkeyName <cacertkeyname> -CA -ocspCheck Optional
For <name>
, substitute the name of the virtual server that you created. For <cacertkeyName>
, substitute the CA certificate key.
Copy
add ssl action <actname> -clientCert ENABLED -certHeader CLIENT-CERT
For <actname>
, substitute a name for the SSL action.
Copy
add ssl policy <polname> -rule true -action <actname>
For <polname>
, substitute a name for your new SSL policy. For <actname>
, substitute the name of the SSL action that you created.
Copy
bind ssl vserver <name> -policyName <polname> -priority 10
For <name>
, replace the name of the VPN virtual server.
Copy
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