2016-07-06 5 views
0

WSO2 Message Broker에서 내 프로젝트의 메시지 중개 시스템으로 사용하고 있습니다. 대기열 정보 (wso2mb 서버에서 생성 된 모든 대기열, 각 대기열의 메시지 수 등 정보)를 얻으려면 AndesAdminServics WSDL에서 클라이언트를 생성하고 내 API에서 getAllQueues() API를 호출하려고했습니다. 매번 이 요청 된 대상 예외에 대한 유효한 인증 경로를 찾을 수 없습니다. 문제가 무엇인지 파악할 수 없습니다. 예외는 -인증서 예외 wso2 메시지 브로커에서 AndesAdminService WSDL의 생성 된 스텁을 호출 할 때

Jul 06, 2016 5:21:19 PM org.apache.axis.utils.JavaUtils isAttachmentSupported 
WARNING: Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled. 
AxisFault 
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException 
faultSubcode: 
faultString: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
faultActor: 
faultNode: 
faultDetail: 
    {http://xml.apache.org/axis/}stackTrace:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.ssl.Alerts.getSSLException(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) 
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source) 
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) 
    at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) 
    at sun.security.ssl.Handshaker.processLoop(Unknown Source) 
    at sun.security.ssl.Handshaker.process_record(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
    at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186) 
    at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191) 
    at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404) 
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) 
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
    at org.apache.axis.client.Call.invoke(Call.java:2767) 
    at org.apache.axis.client.Call.invoke(Call.java:2443) 
    at org.apache.axis.client.Call.invoke(Call.java:2366) 
    at org.apache.axis.client.Call.invoke(Call.java:1812) 
    at org.wso2.carbon.andes.admin.AndesAdminServiceSoap11BindingStub.getAllQueues(AndesAdminServiceSoap11BindingStub.java:858) 
    at org.wso2.carbon.andes.admin.AndesAdminServicePortTypeProxy.getAllQueues(AndesAdminServicePortTypeProxy.java:62) 
    at org.wso2.carbon.andes.admin.TestClass.main(TestClass.java:11) 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.validator.PKIXValidator.doBuild(Unknown Source) 
    at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) 
    at sun.security.validator.Validator.validate(Unknown Source) 
    at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source) 
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source) 
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
    ... 24 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source) 
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) 
    at java.security.cert.CertPathBuilder.build(Unknown Source) 
    ... 30 more 

    {http://xml.apache.org/axis/}hostname:RIL15066YJB152 

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at org.apache.axis.AxisFault.makeFault(AxisFault.java:101) 
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:154) 
    at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 
    at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) 
    at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) 
    at org.apache.axis.client.AxisClient.invoke(AxisClient.java:165) 
    at org.apache.axis.client.Call.invokeEngine(Call.java:2784) 
    at org.apache.axis.client.Call.invoke(Call.java:2767) 
    at org.apache.axis.client.Call.invoke(Call.java:2443) 
    at org.apache.axis.client.Call.invoke(Call.java:2366) 
    at org.apache.axis.client.Call.invoke(Call.java:1812) 
    at org.wso2.carbon.andes.admin.AndesAdminServiceSoap11BindingStub.getAllQueues(AndesAdminServiceSoap11BindingStub.java:858) 
    at org.wso2.carbon.andes.admin.AndesAdminServicePortTypeProxy.getAllQueues(AndesAdminServicePortTypeProxy.java:62) 
    at org.wso2.carbon.andes.admin.TestClass.main(TestClass.java:11) 
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.ssl.Alerts.getSSLException(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source) 
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source) 
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source) 
    at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source) 
    at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source) 
    at sun.security.ssl.Handshaker.processLoop(Unknown Source) 
    at sun.security.ssl.Handshaker.process_record(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
    at org.apache.axis.components.net.JSSESocketFactory.create(JSSESocketFactory.java:186) 
    at org.apache.axis.transport.http.HTTPSender.getSocket(HTTPSender.java:191) 
    at org.apache.axis.transport.http.HTTPSender.writeToSocket(HTTPSender.java:404) 
    at org.apache.axis.transport.http.HTTPSender.invoke(HTTPSender.java:138) 
    ... 12 more 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.validator.PKIXValidator.doBuild(Unknown Source) 
    at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) 
    at sun.security.validator.Validator.validate(Unknown Source) 
    at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source) 
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source) 
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
    ... 24 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
    at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source) 
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) 
    at java.security.cert.CertPathBuilder.build(Unknown Source) 
    ... 30 more 

내 API는 getAllQueues()를 호출하는 방법은 -

package org.wso2.carbon.andes.admin; 

import java.rmi.RemoteException; 

public class TestClass { 

    public static void main(String args[]) { 
     AndesAdminServiceSoap11BindingStub aadptp; 
    AndesAdminServiceLocator loact = new AndesAdminServiceLocator(); 

    try { 
     aadptp = new AndesAdminServiceSoap11BindingStub(); 
     aadptp._setProperty(org.apache.axis.client.Stub.USERNAME_PROPERTY, "admin"); 
     aadptp._setProperty(org.apache.axis.client.Stub.PASSWORD_PROPERTY, "admin"); 
     aadptp._setProperty(org.apache.axis.client.Stub.ENDPOINT_ADDRESS_PROPERTY, 
       loact.getAndesAdminServiceHttpsSoap11EndpointAddress()); 

     org.wso2.carbon.andes.admin.internal.xsd.Queue[] queues = aadptp.getAllQueues(); 
     System.out.println(queues.length); 
    } catch (AxisFault e1) { 
     e1.printStackTrace(); 
    } catch (RemoteException e) { 
     e.printStackTrace(); 
    } 
    } 

} 

답변

0

첫째, SoapUI 또는 어떤 다른 선호하는 도구를 사용하여 엔드 포인트에 액세스를 시도하십시오. 액세스 할 수 있으면 wso2 인증서를 JVM 키 저장소에 추가해야하는 것처럼 들립니다.

WSO2 제품은 ${carbon.home}/repository/resources/security/ 디렉토리에있는 맞춤 키 저장소를 사용합니다. Java 클라이언트가있는 WSO2 서버에서 https 엔드 포인트에 액세스해야하는 경우,`$ {JAVA_HOME}/lib/security/cacerts '에있는 사용 된 JVM의 키 스토어 파일에 인증서를 추가해야합니다. 인증서는 다음 명령을 실행하여 키 스토어에 이미있는 경우

먼저 확인해 볼 수 있습니다 : keytool -list -keystore "${JAVA_HOME}/lib/security/cacerts"로 키 스토어에 추가 인증서가없는 경우

(당신은 암호를 제공 할 필요가 없습니다) 다음 명령 :

keytool -import -noprompt -trustcacerts -alias wso2carbon -file ${carbon.home}/repository/resources/security/ -keystore ${JAVA_HOME}/lib/security/cacerts -storepass wso2carbon