从Java bean到Web服务的SSL连接问题

我编写了一个通过jaxws连接到SSL Web服务(包括客户端证书)的应用程序.为此,我有一个wstrust.jks,其中包含ws的受信任根证书,以及client.p12,它是连接到ws时要使用的客户端证书.然后我创建了一个自定义SSLSocketFactory,以便在连接到ws时能够使用我的wstrust.jks和client.12.我告诉jaxws使用我的实现:

[javax.xml.ws.BindingProvider] .getRequestContext().put(JAXWSProperties.SSL_SOCKET_FACTORY,customSSLSocketFactory);

如果我将它作为一个独立的java应用程序运行,那么一切都像魅力一样.但是当我在作为在Tomcat下运行的war文件部署的Java bean(JSF)中使用相同的技术时,
我得到了“PKIX路径构建失败” – 错误.

但是如果我在启动Tomcat时通过JAVA_OPTS配置SSL(通过-Djavax.net.ssl.*参数),我可以使用它.

所以我的问题:

我如何(或可能)使我的自定义SSLSocketFactory技术在Java bean中工作?

我想当tomcat将自己包裹在我的应用程序中时,当作为bean运行时,它的工作方式不同,我希望使用自定义的SSLSocketFactory不受尊重……

感谢您的任何意见!

/ Tobbe

最佳答案 解决了它.如果有人有同样的问题,这里是如何.而不是设置我的自定义工厂:

[javax.xml.ws.BindingProvider] .getRequestContext().put(JAXWSProperties.SSL_SOCKET_FACTORY,customSSLSocketFactory);

我必须通过以下方式:

HttpsURLConnection.setDefaultSSLSocketFactory(customSSLSocketFactory);

否则它似乎被忽略了.

/ Tobbe

点赞