2016-10-14 2 views
0

서비스 제공 업체가 편도 TLS를 구현 한 AXIS 기반 웹 서비스에 대해 연구하고 있습니다. 이 서비스를 사용하기 위해 javax.net.ssl.keyStore 또는 javax.net.ssl.trustStore를 사용하여 weblogic 시작 스크립트에서 keystore 및 truststore 속성을 제공했습니다. 우리가 테스트를 실행하는 경우AXIS 웹 서비스가 Weblogic 서버에 정의 된 Truststore를 사용하지 않습니다.

, 우리는 예외 아래 얻고있다 : 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 (getInstance.java:177) 에서 javax.net.ssl.SSLContext.getInstance (SSLContext.java:26) 에서 javax.net.ssl.SSLContext.getDefault (SSLContext.java:9) 에서 javax.net.ssl. SSLSocketFac tory.getDefault (SSLSocketFactory.java:23) at org.apache.axis.components.net.JSSESocketFactory.initFactory (JSSESocketFactory.java:87) at org.apache.axis.components.net.JSSESocketFactory.create (JSSESocketFactory. 자바 : 105) ...

에 의한 더 22 : java.lang.Exception와는 : 신뢰 파일이 존재하지 않습니다 /home/apps/weblogic/.keystore com.ibm.jsse2.rc.a에서 (rc.java:38) com.ibm.jsse2.ec.f (ec.java:19) at com.ibm.jsse2.ec. < 초기화하기 > sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:86)에서 sun.reflect.NativeConstructorAccessorImpl.newInstance0 (기본 방법) 에서 (ec.java:21) sun.reflect.DelegatingConstructorAccessorImpl.newInstance에서 (DelegatingConstructorAccessorImpl 된 .java : 58) java.lang.reflect.Constructor.newInstance (Constructor.java:542) java.security.Provider를 $ Service.newInstance (Provider.java:1252) 에서 ...에서 보다 29

keystore/truststore 속성을 설정 한 후에도 /home/apps/weblogic/.keystore 위치를 선택하는 위치가 확실하지 않습니다. 나는 AXIS의 JAR 파일을 선택하면

, 내가 org.apache.axis.components.net.SunJSSESocketFactory 클래스에서 우리는 신뢰에 대한 기본 속성 아래에있는 것을 보았다 :

정적 부울 defaultClientAuth = 거짓; private 부울 clientAuth = 거짓; static String defaultKeystoreFile = System.getProperty ("user.home") + "/.keystore"; static 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 속성을 다시 설정하는 것입니다.

iControl.Interfaces 생성자를 호출하기 전에 deafult SSL 컨텍스트를 초기화하여 weblogic 시작 스크립트에 언급 된 등록 정보를 사용하여 SSL 컨텍스트를로드 할 수도 있습니다.