How to prevent SSL proxy from breaking client certificate authentication with a web server?

FAQ ID:    FAQ893
Version:    3.0
Status:    Published
Published date:    07/14/2010
Updated:    11/16/2012


It is not uncommon for HTTPS servers to require client certificate authentication. This setup is used when server intends to authenticate incoming requests based on the certificate in the client’s certificate store (e.g., Internet Explorer’s certificate store). The server may have application specific logic which looks at certain fields in the client certificate to infer the user’s identity to authenticate and authorize the user.

The problem statement is: SSL proxy when intercepting traffic resets the underlying TCP connection when server requests client certificate. The new feature is tunnel the traffic thereafter if policy detects this scenario and is set to tunnel, or intercept the traffic and generate an exception page if policy detects this scenario and is set to intercept or intercept on exception

Solution, upgrade to SGOS or later,apply the new policy as the SGOS CMG:

Chapter 3: Condition Reference

page 65



Tests whether or not the server has requested SSL client certificate authentication.

When the SSL proxy establishes a connection with the server and the server requests an SSL client

certificate, this condition is set to yes, else it is set to no. This condition is NULL for transactions that

do not involve an SSL connection to the client.


client.certificate.requested = yes|no

Layer and Transaction Notes

Use in <SSL-Intercept> layer.

Applies to: SSL Intercept transactions


This condition is used to avoid intercepting SSL proxy traffic when a server requests a client certificate

to authenticate the client. The reason is that client certificates are not supported in this configuration.

When intercepting such traffic, the ProxySG generates an exception page. The policy below enables

SSL proxy interception only when a client certificate is not requested by the server.


; If the server requests a client certificate, tunnel the SSL traffic via SSL proxy

client.certificate.requested=yes ssl.forward_proxy(no)

; Otherwise, intercept SSL traffic using HTTPS forward proxy.


; Exclude the bottom rule if you have a rule to bypass SSL interception in VPM.




Rate this Page

Please take a moment to complete this form to help us better serve you.

Did this document help answer your question?
If you are finished providing feedback, please click the RATE CONTENT button. Otherwise, please add more detail in the following text box and then click RATE CONTENT.

Your response will be used to improve our document content.

Ask a Question