Enabling certificate authentication
About this task
Certificate authentication is not enabled by default. To enable certificate authentication, complete the following procedure.
Procedure
| Configuration | Description |
|---|---|
accept-client-certs = optional |
Clients can choose to use certificate-based authentication. WebSEAL asks clients for an X.509 certificate. If the user supplies a certificate, certificate-based authentication is used. |
accept-client-certs = required |
Clients must use certificate-based authentication. WebSEAL asks clients for an X.509 certificate. If the user does not present a certificate, WebSEAL does not allow a connection. |
accept-client-certs = prompt_as_needed |
Clients do not need to authenticate with a certificate at session start-up. Clients can later initiate certificate authentication. This setting enables delayed certificate authentication mode. |
For example, to prompt users for a client-side certificate only when the user encounters a resource that requires certificate authentication, enter:
[certificate]
accept-client-certs = prompt_as_needed
prompt_as_needed configuration entry to function
incorrectly in the Chrome browser. Extra configuration is needed to allow
prompt_as_needed to work with all browsers.The configuration parameter
secondary-port must be set in the [certificate] stanza. This
parameter modifies the behavior of accept-client-certs = prompt_as_needed to post
the certificate login to a secondary interface configured to listen on this port.
A secondary
interface must be configured for the secondary-port that is specified and
accept-client-certs=required set for the secondary interface.
If a content
security policy with a form-action directive is defined, it must be updated to
allow forms to post to the secondary interface.
The following example configuration uses the
secondary-port method:
[server]
https = yes
https-port = 443
network-interface = 172.16.99.10
[ssl]
webseal-cert-keyfile-label = WebSEAL-Test-Only
[certificate]
accept-client-certs = prompt_as_needed
secondary-port = 444
[interfaces]
interface1 = network-interface=172.16.99.10;https-port=444;certificate-label=WebSEAL-Test-Only;accept-client-certs=required;always-neg-tls=yes;use-secondary-listener=yes
[acnt-mgt]
http-rsp-header = content-security-policy:TEXT{default-src 'self'; frame-ancestors 'self'; form-action 'self' https://172.16.99.10:444;}- An interface that is configured with
accept-client-certs = prompt_as_neededis not used to prompt for certificates when a value is provided forsecondary-port. - A template page macro
%SECONDARY_BASE%is available.- When
secondary-portis provided, it has the value:HTTPS://%HOSTNAME%:<secondary-port>. - When
secondary-portis not provided, the macro is not populated.
- When
- The
certlogin.htmlandstepuplogin.htmltemplate pages use the%SECONDARY_BASE%macro.- When Certificate Login is clicked, the form posts to
%SECONDARY_BASE%/pkmslogin.form.Note: If a content security policy is configured, theform-actiondirective must be updated to include the value of%SECONDARY_BASE%to allow this post.
- When Certificate Login is clicked, the form posts to
- The
[certificate] cert-prompt-max-triesis not used in this mode, and the login process requires less redirects to operate.
accept-client-certs=required.- When a successful authentication that uses client certs occurs on a request for
/pkmslogin.form, WebSEAL redirects the client to the previously cached request that was made before the login process started.Note:[server] cache-host-headermust be set to yes.- This behavior is different from the previous behavior. The use of the
requiredmethod of authentication did not disrupt the access to the page requested when the client received the prompt for a certificate.
- This behavior is different from the previous behavior. The use of the
- A configuration parameter
always-neg-tlswas added to[server]and[interfaces].- If
always-neg-tlsis set toyes, each TLS connection on this interface processes only a single request. After the request is complete, the connection is closed and the TLS session ends. A TLS session renegotiation must then be completed for every connection. Thealways-neg-tls = yesis an expensive method of using TLS and must be used only where necessary. Typically,always-neg-tls = yesis used on the interface that usessecondary-portso that TLS connections on that interface always request a certificate from the client.
- If