Sorry for the spam... (I hope this is relevant?)
I found the difference, in my use of SSLContextFactory, I was not calling:
sslContextFactory.setTrustManagerFactoryAlgorithmUseDefault(true);
sslContextFactory.setKeyManagerFactoryAlgorithmUseDefault(true);
I seriously think these should be the default behavior. If these are
not set, and no protocol is set, the factory simply fails to create
either a KeyManagerFactory or TrustManagerFactory internally with no
warnings or errors. (lines 83 & 98 of SslContextFactory.java in
release 2.0.0-M1)
I believe this is from the mina-integration subproject... is there a
more appropriate list or bug database I should submit this to?
On Fri, Mar 7, 2008 at 2:14 PM, Mark Renouf <[EMAIL PROTECTED]> wrote:
> 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);