我正在尝试对Web服务执行客户端身份验证。我需要在运行时动态提供自定义SSL上下文。经过大量搜索之后,我找到了一种创建自定义SSL上下文的方法,并使用下面的代码行,我要求我的服务使用此SSL上下文。
SSLSocketFactoryGenerator s = new SSLSocketFactoryGenerator("alias",keystore_location,truststore_location);
((BindingProvider) service).getRequestContext().put("com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory", s.getSSLSocketFactory());
但是,我仍然收到SSL_HANDSHAKE_FAILED_ERROR。在调试(-Djavax.net.debug=all
之后,我发现根本没有使用提到的密钥库。
但是当我使用相同的SSL上下文,例如SSLContext.setDefault(mycontext);
时
一切正常,因此创建上下文的代码很好,但是将该上下文与服务绑定无法正常工作
还有其他方法可以将该SSL上下文动态附加到运行时吗?