是否可以将自定义信任库与SOAPConnection一起使用?

时间:2015-03-06 17:04:12

标签: java ssl soap certificate truststore

(这是Java 7。)

我们正在考虑使用javax.xml.soap.SOAPConnection及其相关内容来做一些相对快速和脏的SOAP消息发送和接收。

但是,将要连接的服务器使用默认Java 7信任库中信任锚为的证书。我们不想修改默认信任库,而是想使用自定义信任库。

如果我们在较低级别工作,我们可以做一些事情,例如获取SSLContext,使用自定义信任库重新初始化它,从中获取SSLSocketFactory等等。

但是从SOAPConnection API和相关类的API中可以看到,没有明显的方法可以更改SSLContext实现使用的SOAPConnection实例。我可以更改默认上下文,但这会改变JVM范围内的事情,这不是我们想要发生的事情。

如果我们想使用SOAPConnection,我们是否只是运气不好?是否允许您相对简单地创建SOAP请求的任何其他库,但是您是否允许指定要使用的SSLContextSSLSocketFactory

2 个答案:

答案 0 :(得分:2)

其他研究清楚地表明,在SOAP类中没有办法做到这一点 - 它们总是使用JVM范围的默认值。

所以我最终使用this answer中的方法,在那里你创建了一个自定义信任管理器,它由两个信任管理器组成 - 一个是从默认信任库构建的,一个是从自定义信任库构建的 - 然后注入复合信任管理器进入默认的SSLContext

答案 1 :(得分:0)

是的,有可能。运行java应用程序时,请传递trust-store / key-store详细信息,如下所示。在您的正常执行代码后附加。

-Djavax.net.ssl.keyStore=myKS.jks -Djavax.net.ssl.keyStorePassword=123456  -Djavax.net.ssl.trustStore=myTS.jks   -Djavax.net.ssl.trustStorePassword=123456