Perhaps my tutorial would help: http://www.jroller.com/gmazza/entry/cxf_x509_profile

Glen

On 11/13/2012 07:28 AM, becam wrote:
Hello htere,

i'm developping a java cxf stand alone client that have to authenticate with
the server (2 ways authentication). following CXF documentation I created
the the cxf.xml and referenced the key/trust stores in this way:


/<beans      xmlns="http://www.springframework.org/schema/beans";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
                xmlns:sec="http://cxf.apache.org/configuration/security";
                xmlns:http="http://cxf.apache.org/transports/http/configuration";
                xmlns:jaxws="http://java.sun.com/xml/ns/jaxws";
                xsi:schemaLocation="
                                                      
http://cxf.apache.org/configuration/security
                                                      
http://cxf.apache.org/schemas/configuration/security.xsd
                                                      
http://cxf.apache.org/transports/http/configuration
                                                      
http://cxf.apache.org/schemas/configuration/http-conf.xsd
                                                      
http://www.springframework.org/schema/beans
                                                
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd";>
                                                

         <http:conduit name="*.http-conduit">

           <http:tlsClientParameters>
              <sec:keyManagers keyPassword="password">
                   <sec:keyStore type="JKS" password="password"
                        file="client-keystore.jks"/>
              </sec:keyManagers>
        
              <sec:trustManagers>
                  <sec:keyStore type="JKS" password="password"
                       file="client-truststire.jks"/>
              </sec:trustManagers>
        
           <sec:cipherSuitesFilter>
         <sec:include>.*_WITH_3DES_.*</sec:include>
         <sec:include>.*_WITH_DES_.*</sec:include>
         <sec:exclude>.*_WITH_NULL_.*</sec:exclude>
         <sec:exclude>.*_DH_anon_.*</sec:exclude>
       </sec:cipherSuitesFilter>

          </http:tlsClientParameters>

     </http:conduit>
</beans>
/




*But i Get the fallowing error:*


/WARNING: Interceptor for
{http://mycom.com/SOA/myservice/service-b}myservice-v1#{http://mycom.com/SOA/myservice}createDataService
has thrown exception, unwinding now
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:271)
        at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:531)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:464)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:367)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:320)
        at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:89)
        at 
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:134)
        at $Proxy32.createDataService(Unknown Source)
        at
it.mycom.soa.myservice.ClientMHttps.do_CreateDataService(ClientMHttps.java:121)
        at pippo.ticket.createDataServiceDB.<init>(createDataServiceDB.java:538)
        at pippo.ProcessaNuovoTT.ApriTicket(ProcessaNuovoTT.java:114)
        at pippo.ProcessaNuovoTT.ProcessaNuovoTTdo(ProcessaNuovoTT.java:55)
        at pippo.starter.main(starter.java:50)
Caused by: javax.net.ssl.SSLHandshakeException: SSLHandshakeException
invoking https://WEB.mycom.com:80/Business/TTV/Services/myservice-v1:
sun.security.validator.ValidatorException: Certificate chaining error
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown
Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.mapException(HTTPConduit.java:1337)
        at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1321)
        at
org.apache.cxf.io.CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java:50)
        at 
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java:189)
        at 
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:623)
        at
org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        ... 13 more
Caused by: javax.net.ssl.SSLHandshakeException:
sun.security.validator.ValidatorException: Certificate chaining error
        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
sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(Unknown
Source)
        at
org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.setupWrappedStream(URLConnectionHTTPConduit.java:170)
        at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleHeadersTrustCaching(HTTPConduit.java:1281)
        at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.onFirstWrite(HTTPConduit.java:1232)
        at
org.apache.cxf.transport.http.URLConnectionHTTPConduit$URLConnectionWrappedOutputStream.onFirstWrite(URLConnectionHTTPConduit.java:182)
        at
org.apache.cxf.io.AbstractWrappedOutputStream.write(AbstractWrappedOutputStream.java:47)
        at
org.apache.cxf.io.AbstractThresholdOutputStream.write(AbstractThresholdOutputStream.java:69)
        at
org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1294)
        ... 18 more
Caused by: sun.security.validator.ValidatorException: Certificate chaining
error
        at sun.security.validator.SimpleValidator.engineValidate(Unknown Source)
        at sun.security.validator.Validator.validate(Unknown Source)
        at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown
Source)
        at
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown
Source)
        at
com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown
Source)
        ... 37 more

  javax.xml.ws.WebServiceException: Could not send Message./


NOW if a remove cxf libraries from my eclipse project AND configure TRUST
and KEY STORE manually:

        System.setProperty("javax.net.ssl.keyStore", keystore);
        System.setProperty("javax.net.ssl.keyStorePassword", "password");
        System.setProperty("javax.net.ssl.trustStore", truststore);
        System.setProperty("javax.net.ssl.trustStorePassword", "password");
        System.setProperty("javax.net.ssl.keyStoreType","JKS");
        System.setProperty("javax.net.ssl.trustStoreType","JKS");



Can please someone give me an advice in where to look? Error says
"certificate chain error", but if I dont use CXF but standard java 6 jaxws
built in. it semms that my cerfication chain has no errors.... :(





--
View this message in context: 
http://cxf.547215.n5.nabble.com/Mutual-authentication-fails-using-cxf-tp5718353.html
Sent from the cxf-user mailing list archive at Nabble.com.


--
Glen Mazza
Talend Community Coders - coders.talend.com
blog: www.jroller.com/gmazza

Reply via email to