2016-10-14 31 views
0

サービスプロバイダが片道TLSを実装しているAXISベースのWebサービスに取り組んでいます。このサービスを使用するには、javax.net.ssl.keyStoreまたはjavax.net.ssl.trustStoreを使用してweblogicスタートアップスクリプトでキーストアとトラストストアのプロパティを提供しました。我々はテストを実行している場合はAXIS WebサービスがWeblogicサーバで定義されたトラストストアを使用していません

、我々は例外の下になっている:java.security.NoSuchAlgorithmException:

による誤差の実装を構築(アルゴリズム:デフォルト、プロバイダを:IBMJSSE2、クラス:com.ibm.jsse2。 ec) at java.security.Provider $ Service.newInstance(Provider.java:1271) at sun.security.jca.GetInstance.getInstance(GetInstance.java:249) at sun.security.jca.GetInstance.getInstance( (SSLContext.java:26) SSLSocketFac tory.getDefault(SSLSocketFactory.java:23)org.apache.axis.components.net.JSSESocketFactory.createでorg.apache.axis.components.net.JSSESocketFactory.initFactory(JSSESocketFactory.java:87) で (JSSESocketFactory。 Javaの:java.lang.Exceptionを::によって引き起こさ105) ... 22もっと

トラストストア・ファイルが存在しません:com.ibm.jsse2.rc.aで/home/apps/weblogic/.keystore を( rc.java:38) com.ibm.jsse2.ec.f(ec.java:19) at com.ibm.jsse2.ec。 <INIT> sun.reflect.DelegatingConstructorAccessorImpl.newInstanceでsun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:86) でsun.reflect.NativeConstructorAccessorImpl.newInstance0(ネイティブメソッド) で(ec.java:21) (DelegatingConstructorAccessorImpl .java:58) java.lang.reflect.Constructor.newInstance(Constructor.java:542) でよりjava.security.Provider $ Service.newInstance(Provider.java:1252) ... 29

キーストア/トラストストアのプロパティを設定した後であっても、/home/apps/weblogic/.keystoreの場所を選択する場所がわからないことがあります。私はAXISのJARファイルをチェックすると

は、私はorg.apache.axis.components.net.SunJSSESocketFactoryクラスで私たちはトラストストアのデフォルトプロパティの下に持っていることを見た:

静的ブールdefaultClientAuth =偽; プライベートboolean clientAuth = false; 静的String defaultKeystoreFile = System.getProperty( "user.home")+ "/.keystore"; 静的String defaultKeyPass = "changeit";

AXIS APIがコマンドライン引数で提供されているものの代わりにこのデフォルトのキーストアを使用している理由は誰でも説明できます。

答えて

0

私はこの問題の根本的な原因と、それがAXISではないことを発見しました。 問題は、f5 Big-IP通信に使用されるiControl.Interfaceクラスにありました。このクラスのコンストラクタでは、トラストストアのシステムプロパティが下の行で上書きされています。 System.setProperty( "javax.net.ssl.trustStore"、System.getProperty( "user.home")+ "/.keystore") ;

これは、weblogicスタートアップスクリプトで設定された場所にトラストストアがない場合、user.homeの.keystoreファイルを探します。

iControl JARを修正してこのハードコードされた値を削除するか、11.5バージョンにアップグレードすることができます。

その他の回避策は、iControl.Interfacesクラスのコンストラクタを呼び出した後でtruststoreプロパティを再度設定することです。

deafult SSLコンテキストを初期化してから、iControl.Interfacesコンストラクタを呼び出して、weblogicスタートアップスクリプトに記述されているプロパティを使用してSSLコンテキストをロードすることもできます。

関連する問題