2010-08-26 79 views
4

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

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

如果我将它作为独立的Java应用程序运行,它就像一个魅力一样。然而,当我在部署为Tomcat下运行的war文件的Java bean(JSF)中使用相同的技术时,我得到一个“PKIX路径构建失败” - 错误。

但是,如果我通过JAVA_OPTS配置SSL,当我启动我的Tomcat(通过-Djavax.net.ssl。*参数)我得到它的工作。

所以我的问题:

我如何(或者是可能的)让我定制的SSLSocketFactory,技术到Java bean中工作?

我想为tomcat的自己裹在我的应用程序,作为一个bean运行时,它是工作不同,我希望用尊重的自定义SSLSocketFactory的心不是...

感谢有这方面的投入!

/Tobbe

回答

2

解决了它。如果任何人有同样的问题,这是如何。而不是通过设置我的自定义工厂:

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

我必须设置它通过:

HttpsURLConnection.setDefaultSSLSocketFactory(customSSLSocketFactory);

否则它似乎被忽略。

/Tobbe