I access my application with url i.e https://myIPAddress:8443/myWebApp/
I have created the myWebApp.xml file(same name as my application context name) which contains below context element and placed it under <tomcat_home>\conf\Catalina\localhost\ <Context> <Valve className="org.apache.catalina.authenticator.MySSLAuthenticator"/> </Context> MySSLAuthenticator.class is under jar file which is placed under <tomcat_home>\lib But looks like MySSLAuthenticator is not coming into picture as i get below error where i see instance of SSLAuthenticator not MySSLAuthenticator javax.net.ssl.SSLHandshakeException: null cert chain at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:266) at sun.security.ssl.ServerHandshaker.clientCertificate(ServerHandshaker.java:1631) at sun.security.ssl.ServerHandshaker.processMessage(ServerHandshaker.java:176) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) at sun.security.ssl.Handshaker.process_record(Handshaker.java:804) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:884) at sun.security.ssl.AppInputStream.read(AppInputStream.java:102) at java.io.InputStream.read(InputStream.java:101) at org.apache.tomcat.util.net.jsse.JSSESupport.handShake(JSSESupport.java:181) at org.apache.tomcat.util.net.jsse.JSSESupport.getPeerCertificateChain(JSSESupport.java:148) at org.apache.coyote.http11.Http11Processor.action(Http11Processor.java:1120) at org.apache.coyote.Request.action(Request.java:349) at org.apache.catalina.authenticator.SSLAuthenticator.authenticate(SSLAuthenticator.java:135) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528) i am not sure what is missing here?