oh one thing you might want to check, since you're trying to
"trustall" in your certificates, in addition to the above, I had to
setup another bit some where else (context startup listener for the
webapp)
TrustAllManager[] tam = { new TrustAllManager() };
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tam, new SecureRandom());
SSLSocketFactory sslSocketFactory = ctx.getSocketFactory();
HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory);
HostnameVerifier hostNameVerifier = new HostnameVerifier()
{
@Override
public boolean verify(String host, SSLSession
sslSession)
{
return(true);
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hostNameVerifier);
On 5/16/13, Ted <[email protected]> wrote:
> I do that in cxf 2.7.4 and oracle jdk1.7, it looks very similar to
> what you're doing although maybe in a different order :
>
> AccountWsService service = new AccountWsService(myServiceUrl);
> AccountWs wsPort = service.getAccountWsPort();
>
> Client cxfClient = ClientProxy.getClient(wsPort);
> HTTPConduit httpConduit = (HTTPConduit) cxfClient.getConduit();
>
> TLSClientParameters tslClientParameters =
> httpConduit.getTlsClientParameters();
> if (tslClientParameters == null) tslClientParameters = new
> TLSClientParameters();
> tslClientParameters.setDisableCNCheck(true);
> TrustAllManager[] tam = { new TrustAllManager() };
> tslClientParameters.setTrustManagers(tam);
> tslClientParameters.setSecureSocketProtocol("SSLv3");
> httpConduit.setTlsClientParameters(tslClientParameters);
>
> HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
> httpClientPolicy.setConnection(ConnectionType.KEEP_ALIVE);
> httpClientPolicy.setConnectionTimeout(connectionTimeout);
> httpClientPolicy.setAllowChunking(false);
> httpClientPolicy.setReceiveTimeout(receiveTimeout);
> httpConduit.setClient(httpClientPolicy);
>
>
> On 5/15/13, Stepan Seycek <[email protected]> wrote:
>> Hallo,
>>
>> I run into problems when I try to set TLSClientParameters ond the HTTP
>> Conduit of a client where I also override the ENDPOINT_ADDRESS. The
>> result
>> is that my TLSClientParameters are not considered at all (certificate
>> validation error). If I do not override the ENDPOINT_ADDRESS, it works as
>> expected. Could anybody point me to a solution that allows me to set
>> both,
>> the endpoint and a cutstom trust manager?
>>
>> Code (tested with CXF 2.7.4, Java 7):
>>
>> private <PortT> void setupSoapPort(PortT soapPort) {
>> Client soapClient = ClientProxy.getClient(soapPort);
>>
>> // set endpoint and timeouts
>> soapClient.getRequestContext().put(Message.ENDPOINT_ADDRESS,
>> this.endpoint);
>> HTTPConduit conduit = (HTTPConduit) soapClient.getConduit();
>> HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
>> httpClientPolicy.setConnectionTimeout(this.connectTimeout);
>> httpClientPolicy.setReceiveTimeout(this.receiveTimeout);
>> conduit.setClient(httpClientPolicy);
>>
>> // enable cookie based sessions
>> ((BindingProvider)soapPort).getRequestContext().put(
>> BindingProvider.SESSION_MAINTAIN_PROPERTY, "true");
>>
>> // disable server certificate validation if requested
>> if (false == this.sslValidateServerCert &&
>> this.endpoint.toLowerCase().startsWith("https://")) {
>> TrustManager[] trustAllCerts = new TrustManager[]{
>> new javax.net.ssl.X509TrustManager() {
>> public X509Certificate[] getAcceptedIssuers() {return null;}
>> public void checkClientTrusted(X509Certificate[] certs, String
>> authType) {}
>> public void checkServerTrusted(X509Certificate[] certs, String
>> authType) {}
>> }
>> };
>> TLSClientParameters tlsParams = new TLSClientParameters();
>> tlsParams.setTrustManagers(trustAllCerts);
>> tlsParams.setDisableCNCheck(true);
>> conduit.setTlsClientParameters(tlsParams);
>> }
>> }
>>
>> Thanks in advance,
>> Stepan
>>
>
>
> --
> Ted.
>
--
Ted.