Hey all, I was wondering if anyone has had any luck or could provide some guidance on using a custom keystore with tomcat 8.5.x and openssl?
I am in the process of upgrading from tomcat 6.0.x using JSSE to tomcat 8.5.x using Openssl. As part of the upgrade process, I need to re-implement our custom keystore. The keystore was implemented in 6.0.x by extending JSSEImplementation and JSSESocketFactory which has since been removed from the code. I was able to work through that and I had my custom keystore working use JSSE, but when I attempt to switch to using OpenSSL and start my application, I get an error like: Exception in thread "Thread-3" java.lang.UnsatisfiedLinkError: org.apache.tomcat.jni.Pool.create(J)J at org.apache.tomcat.jni.Pool.create(Native Method) at org.apache.tomcat.util.net.openssl.OpenSSLEngine.<clinit>(OpenSSLEngine.java:72) at com.comcast.cdn.traffic_control.traffic_router.protocol.RouterSslUtil.getImplementedProtocols(RouterSslUtil.java:65) at org.apache.tomcat.util.net.SSLUtilBase.<init>(SSLUtilBase.java:53) at com.comcast.cdn.traffic_control.traffic_router.protocol.RouterSslUtil.<init>(RouterSslUtil.java:54) at com.comcast.cdn.traffic_control.traffic_router.protocol.RouterSslImplementation.getSSLUtil(RouterSslImplementation.java:34) at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLContext(AbstractJsseEndpoint.java:102) at org.apache.tomcat.util.net.AbstractJsseEndpoint.initialiseSsl(AbstractJsseEndpoint.java:85) at org.apache.tomcat.util.net.NioEndpoint.bind(NioEndpoint.java:225) at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:970) at org.apache.tomcat.util.net.AbstractJsseEndpoint.init(AbstractJsseEndpoint.java:244) at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:613) at org.apache.coyote.http11.AbstractHttp11Protocol.init(AbstractHttp11Protocol.java:66) at com.comcast.cdn.traffic_control.traffic_router.protocol.LanguidNioProtocol.init(LanguidNioProtocol.java:63) at com.comcast.cdn.traffic_control.traffic_router.protocol.LanguidPoller.run(LanguidPoller.java:58) It seems that this is because I don’t have a keystore configured in my server.xml, so tomcat tries to use the default ~/.keystore which causes issues at about the time it tries to get the IMPLEMENTED_PROTOCOLS_SET in OpenSSLUtil. Like I said earlier if I switch to JSSEUtil, things work as expected. Any thoughts? Thanks, Dave