You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Matthew Lohbihler <ml...@serotoninsoftware.com> on 2014/03/06 01:34:49 UTC

SSL testing

How can i configure a client to trust all certificates for testing WS 
under SSL? I'm using CXF 3.0.0m2, and the examples i've found appear 
obsolete. Are there updated examples somewhere?

Many thanks,
Matthew


Re: SSL testing

Posted by Matthew Lohbihler <ml...@serotoninsoftware.com>.
Thank you Freeman! Note that i couldn't find the classes SOAPService and 
Greeter, but was able to use ClientProxyFactoryBean for the same 
purpose. The key was this:

         HTTPConduit httpConduit = (HTTPConduit) 
((org.apache.cxf.endpoint.Client) client).getConduit();

I didn't know where the conduit came from. The rest of your code matched 
that from the previous CXF version. Below is the code that i got working.

Again, many thanks,
Matthew

         ClientProxyFactoryBean factory = new ClientProxyFactoryBean();

         // factory.setAddress("http://localhost:9000/ota");
         factory.setAddress("https://localhost:9001/ota");

         OTAEndpoint client = factory.create(OTAEndpoint.class);
         HTTPConduit httpConduit = (HTTPConduit) 
((org.apache.cxf.endpoint.Client) client).getConduit();

         TLSClientParameters params = httpConduit.getTlsClientParameters();
         if (params == null) {
             params = new TLSClientParameters();
             httpConduit.setTlsClientParameters(params);
         }

         params.setTrustManagers(new TrustManager[] { new 
X509TrustManager() {
             @Override
             public java.security.cert.X509Certificate[] 
getAcceptedIssuers() {
                 return null;
             }

             @Override
             public void 
checkServerTrusted(java.security.cert.X509Certificate[] chain, String 
authType)
                     throws CertificateException {
                 // no op
             }

             @Override
             public void 
checkClientTrusted(java.security.cert.X509Certificate[] chain, String 
authType)
                     throws CertificateException {
                 // no op
             }
         } });

         params.setDisableCNCheck(true);





On 3/6/2014 3:20 AM, Freeman Fang wrote:
> Hi,
>
> You need a dummy TrustManager which can bypass the Certificate check
> Some code like
>          SOAPService service = new SOAPService(url, SOAPService.SERVICE);
>
>          assertNotNull("Service is null", service);
>
>          final Greeter port = service.getHttpsPort();
>
>          assertNotNull("Port is null", port);
>
>          
>          BindingProvider provider = (BindingProvider)port;
>
>          provider.getRequestContext().put(
>
>                BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
>
>                address);
>
>          Client client = ClientProxy.getClient(port);
>
>          HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
>
>          TrustManager[] trustAllCerts = new TrustManager[] {
>
>              new X509TrustManager() {
>
>   
>                  public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
>
>                  }
>
>   
>                  public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
>
>                  }
>
>   
>                  public java.security.cert.X509Certificate[] getAcceptedIssuers() {
>
>                      return null;
>
>                  }
>
>   
>              }
>
>          };
>
>   
>          TLSClientParameters tlsParams = new TLSClientParameters();
>
>   
>          tlsParams.setTrustManagers(trustAllCerts);
>
>   
>         
>          tlsParams.setDisableCNCheck(true);
>
>          httpConduit.setTlsClientParameters(tlsParams);
>
>          assertEquals(port.greetMe("Kitty"), "Hello Kitty");
>
> -------------
> Freeman(Yue) Fang
>
> Red Hat, Inc.
> FuseSource is now part of Red Hat
>
>
>
> On 2014-3-6, at 上午8:34, Matthew Lohbihler wrote:
>
>> How can i configure a client to trust all certificates for testing WS under SSL? I'm using CXF 3.0.0m2, and the examples i've found appear obsolete. Are there updated examples somewhere?
>>
>> Many thanks,
>> Matthew
>>
>


Re: SSL testing

Posted by Freeman Fang <fr...@gmail.com>.
Hi,

You need a dummy TrustManager which can bypass the Certificate check
Some code like
        SOAPService service = new SOAPService(url, SOAPService.SERVICE);

        assertNotNull("Service is null", service);  

        final Greeter port = service.getHttpsPort();

        assertNotNull("Port is null", port);

        
        BindingProvider provider = (BindingProvider)port;

        provider.getRequestContext().put(

              BindingProvider.ENDPOINT_ADDRESS_PROPERTY,

              address);

        Client client = ClientProxy.getClient(port);

        HTTPConduit httpConduit = (HTTPConduit) client.getConduit();

        TrustManager[] trustAllCerts = new TrustManager[] {

            new X509TrustManager() {

 
                public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {

                }

 
                public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {

                }

 
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {

                    return null;

                }

 
            }

        };

 
        TLSClientParameters tlsParams = new TLSClientParameters();

 
        tlsParams.setTrustManagers(trustAllCerts);

 
       
        tlsParams.setDisableCNCheck(true);

        httpConduit.setTlsClientParameters(tlsParams);

        assertEquals(port.greetMe("Kitty"), "Hello Kitty");

-------------
Freeman(Yue) Fang

Red Hat, Inc. 
FuseSource is now part of Red Hat



On 2014-3-6, at 上午8:34, Matthew Lohbihler wrote:

> How can i configure a client to trust all certificates for testing WS under SSL? I'm using CXF 3.0.0m2, and the examples i've found appear obsolete. Are there updated examples somewhere?
> 
> Many thanks,
> Matthew
>