4

jaxwsを介してSSLWebサービス(クライアント証明書を含む)に接続するアプリケーションを作成しました。これを機能させるには、wsの信頼されたルート証明書を含むwstrust.jksと、wsに接続するときに使用するクライアント証明書であるclient.p12があります。次に、wsへの接続中にwstrust.jksとclient.12を使用できるようにカスタムSSLSocketFactoryを作成しました。私はjaxwsに私の実装を使用するように指示します:

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

スタンドアロンのJavaアプリケーションとして実行すると、すべてが魅力のように機能します。ただし、Tomcatで実行されているwarファイルとしてデプロイされたJava Bean(JSF)内で同じ手法を使用すると、「PKIXパスの構築に失敗しました」というエラーが発生します。

しかし、Tomcatを起動するときに(-Djavax.net.ssl。*パラメーターを介して)JAVA_OPTSを介してSSLを構成すると、SSLが機能するようになります。

だから私の質問:

カスタムSSLSocketFactoryテクニックをJavaBean内で機能させるにはどうすればよいですか(または可能ですか)。

tomcatは自分のアプリケーションをラップしているので、Beanとして実行すると動作が異なり、カスタムSSLSocketFactoryを使用したいという希望は尊重されません...

これに関するご意見ありがとうございます!

/トッベ

4

1 に答える 1

2

解決しました。誰かがここで同じ問題を抱えているなら、その方法です。カスタムファクトリを設定する代わりに:

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

私はそれを設定しなければなりませんでした:

HttpsURLConnection.setDefaultSSLSocketFactory(customSSLSocketFactory);

そうでなければ、それは無視されるようです。

/トッベ

于 2010-08-27T07:00:47.000 に答える