• Post Reply Bookmark Topic Watch Topic
  • New Topic

Issue faced while calling Web service from standalone client using certificate.

 
Ash Kondhalkar
Ranch Hand
Posts: 43
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

We have developed a Web service using CXF 2.5 and deployed it on Weblogic 10.3. We have tested the webservice operations using SOAP UI and it is working fine. We generated the stub jar file using CXF. We set up a stand alone client and used the stub and other relevant jar files to call the web service. We also have set up the certificate related code but facing the issues. The code snippet related to certificate set up is,

******************************************************************************************************************************************


System.setProperty( "javax.xml.rpc.ServiceFactory", "weblogic.webservice.core.rpc.ServiceFactoryImpl" );
System.setProperty("java.protocol.handler.pkgs","com.certicom.net.ssl");
System.setProperty("https.cipherSuites","SHA1withRSA,MD5withRSA");

String clientCertificate = "clientCert.pem"; String pwd = “password”; String serverRootCACert = "rootCA.pem";


SSLAdapterFactory factory = SSLAdapterFactory.getDefaultFactory();

WLSSLAdapter adapter = (WLSSLAdapter) factory.getSSLAdapter(); FileInputStream clientCredentialFile = new FileInputStream (client certificate);

FileInputStream serverRootCA = new FileInputStream (serverRootCACert);

adapter.loadLocalIdentity(clientCredentialFile, pwd.toCharArray()); adapter.setVerbose(true);

adapter.setTrustedCertificatesFile(rootCA);
adapter.setStrictChecking(false);
factory.setDefaultAdapter(adapter);
factory.setUseDefaultAdapter(true);

******************************************************************************************************************************************

It is giving below exception,

******************************************************************************************************************************************

org.apache.cxf.interceptor.Fault: Could not send Message.
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:64)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:226)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:469)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:299)
at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:251)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:124)
at $Proxy44.getFMODetailsByExpenseCode(Unknown Source)
at src.WFPProfileInfoServiceClientForFMO.main(WFPProfileInfoServiceClientForFMO.java:121)
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(Unknown Source)
at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getOutputStream(Unknown Source)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1904)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1859)
at org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:42)
at org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69)
at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1922)
at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:626)
at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
... 8 more

******************************************************************************************************************************************

It is seen that we are unable to send the certificate while making the web service call. Are we missing setting up some property or something before making the web service call? Kindly let me know.

Thanks & Regards
Ashwin
 
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!