Another update. Ok. That hunch payed off... I replaced the SSLContextFactory with the manual equivalent and it's working now....
My eyes are a bit weary at this point so I can't spot an obvious difference. Hopefully I'll have a chance to go look at SSLContextFactory and compare it with this code, there's got to be a critical difference somewhere. Anyway, here is the working init code to create the each SSLContext. This is the only part I changed: KeyStore serverKeyStore = KeyStore.getInstance("PKCS12"); serverKeyStore.load(loader.getResourceAsStream("ssl/server.p12"), DEFAULT_KEY_PASS.toCharArray()); KeyStore clientKeyStore = KeyStore.getInstance("PKCS12"); clientKeyStore.load(loader.getResourceAsStream("ssl/client.p12"), DEFAULT_KEY_PASS.toCharArray()); KeyStore trustStore = KeyStore.getInstance("JKS"); trustStore.load(loader.getResourceAsStream("ssl/trusted.jks"), DEFAULT_KEY_PASS.toCharArray()); KeyManagerFactory serverKeyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); serverKeyManagerFactory.init(serverKeyStore, DEFAULT_KEY_PASS.toCharArray()); KeyManager[] serverKeyManagers = serverKeyManagerFactory.getKeyManagers(); KeyManagerFactory clientKeyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); clientKeyManagerFactory.init(clientKeyStore, DEFAULT_KEY_PASS.toCharArray()); KeyManager clientKeyManagers[] = clientKeyManagerFactory.getKeyManagers(); TrustManagerFactory serverTrustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); serverTrustManagerFactory.init(trustStore); TrustManager[] serverTrustManagers = serverTrustManagerFactory.getTrustManagers(); TrustManagerFactory clientTrustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); clientTrustManagerFactory.init(trustStore); TrustManager[] clientTrustManagers = clientTrustManagerFactory.getTrustManagers(); SSLContext serverSSLContext = SSLContext.getInstance("TLS"); serverSSLContext.init(serverKeyManagers, serverTrustManagers, null); SSLContext clientSSLContext = SSLContext.getInstance("TLS"); clientSSLContext.init(clientKeyManagers, clientTrustManagers, null); On Fri, Mar 7, 2008 at 12:07 PM, Mark Renouf <[EMAIL PROTECTED]> wrote: > Nope, same failure using wantClientAuth, needClientAuth or neither > > I seem to remember now the last time I know I had this code working I > was doing the configuration of the SSLContext directly > (KeyManagerFactory.getInstance(...), etc...) I'm going to replace that > and see what happens. Maybe there is a problem in our case using > SSLContextFactory? Or quite possibly, I'm just not using it properly > somehow...