Context ----------- Exact tomcat version, Operating Systems, other configurations-
Current Tomcat version - 8.5.15 Operating Systems - Windows/ Linux Upgrading to tomcat version - 8.5.23 Application - Java Application. I have an application with tomcat, say fooapp. I also have a custom keystore type, say DKS (Java by default has the JKS keystore). During start of my application, it loads the DKS keystore to get the certificate for the application. This is done using the following changes in server.xml <Connector SSLEnabled="true" sslImplementationName="com.vmware.identity.tomcat.GKSAwareImpl" store="CERT_STORE" port="${bio-ssl-localhost.https.port}" protocol="com.vmware.identity.tomcat. GKSAwareHttp11NioProtocol" redirectPort="${bio-ssl-localhost.https.port}" scheme="https" secure="true" maxHttpHeaderSize="16384"> <Certificate certificateKeystoreType="GKS" Problem ----------- The new version of tomcat has a changed code that is causing my application from not able to load the GKS keystore. In Tomcat 8.5.15, getKeyManagers() method - if ks is not null, it simply proceeds further doing the ks.isKeyEntry() etc.. In Tomcat 8.5.23, getKeyManagers() method - if ks is initialized as before and create a new reference - KeyStore ks = certificate.getCertificateKeystore(); KeyStore ksUsed = ks; After the below code, the ksUsed is getting back to JKS and fails to load my custom keystore type "GKS" // Switch to in-memory key store String provider = certificate.getCertificateKeystoreProvider(); if (provider == null) { ksUsed = KeyStore.getInstance(certificate.getCertificateKeystoreType()); } else { ksUsed = KeyStore.getInstance(certificate.getCertificateKeystoreType(), provider); } ksUsed.load(null, null); --> throws unimplmented method I am setting the provider type properly in java.security which is also used while loading the application. Has anybody faced similar problem? Thanks, Emil