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