I just checked the code of your HttpClientconfigurer, you didn’t set the httpClientBuilder with the SSLConnectionSocketFactory instance that you just created.
-- Willem Jiang Red Hat, Inc. Web: http://www.redhat.com Blog: http://willemjiang.blogspot.com (English) http://jnn.iteye.com (Chinese) Twitter: willemjiang Weibo: 姜宁willem On June 6, 2015 at 5:48:31 AM, jspyeatt (john.pye...@singlewire.com) wrote: > Like several similar posts I've seen I need to allow self-signed certs for > https4 (2.15.2). Mine isn't working. > > I've created an implementation of HttpClientConfigurer that allows any > host/cert. Below is the implementation of configureHttpClient(). > > @Override > public void configureHttpClient(HttpClientBuilder httpClientBuilder) { > log.debug("configureHttpClient()"); > try { > SSLContextBuilder builder = new SSLContextBuilder(); > builder.loadTrustMaterial(null, new TrustSelfSignedStrategy() { > @Override > * public boolean isTrusted(X509Certificate[] a, String b) > throws CertificateException { > log.debug("isTrusted() returns true"); > return true; > }* > }); > > SSLContext sslContext = builder.build(); > > SSLConnectionSocketFactory sslsf = new > SSLConnectionSocketFactory(sslContext, new > TrustEverythingHostnameVerifier()); > } catch (Exception e) { > log.error(e,e); > throw new IllegalStateException("Unable to configure > TrustingHttpClientConfigurer", e); > } > } > > > Then in an implementation of CameltestSupport I've overridden > createRegistry(). > @Override > protected JndiRegistry createRegistry() throws Exception { > JndiRegistry jndi = super.createRegistry(); > log.info("createRegistry()"); > > *jndi.bind("MyConfigurer", new TrustingHttpClientConfigurer());* > Object o = > jndi.lookup(TrustingHttpClientConfigurer.HTTP_CLIENT_CONFIGURER); > log.debug("object type: " + o.getClass().getCanonicalName()); > return jndi; > } > > Then in my createRouteBuilder() it contains... > > return new RouteBuilder() { > public void configure() { > > log.debug("CONFIGURE"); > * > HttpComponent httpComponent = context.getComponent("https4", > HttpComponent.class); > httpComponent.setHttpClientConfigurer(new > TrustingHttpClientConfigurer()); > > log.info("CCC " + > context.getRegistry().lookupByName("MyConfigurer")); > > from("direct:start").transform(simple("FRED")).to("https4://172.30.253.94:8444/services?httpClientConfigurer=#MyConfigurer";* > > } > }; > > public void testSimple() throws Exception { > HttpComponent comp = > template.getCamelContext().getComponent("https4", HttpComponent.class); > * log.info("DDD " + > comp.getHttpClientConfigurer().getClass().getCanonicalName());* > template.sendBody("direct:start", "FRED"); > > } > > When the test runs I do get > *DDD com.singlewire.monte.eh.config.TrustingHttpClientConfigurer* which is > what I would expect. > > However test is failing with the obligatory > javax.net.ssl.SSLHandshakeException. This is what I would expect given that > the component isn't calling my version of isTrusted(X509Certificate[] a, > String b) created during TrustingHttpClientConfigurer.configureHttpClient(). > I know this because I never see the debug message indicating that it was > called. > > > So it's as if during execution of my route the configurator is being > ignored. > > I've tried ?httpClientConfigurer=#MyConfigurer > I've tried ?httpClientConfigurer=MyConfigurer > > I've tried forcing things like this. > HttpComponent httpComponent = context.getComponent("https4", > HttpComponent.class); > httpComponent.setHttpClientConfigurer(new TrustingHttpClientConfigurer()); > > Nothing seems to work. Any guidance would be greatly appreciated. > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/https4-2-15-2-not-recognizing-my-httpClientConfigurer-endpoint-option-tp5767922.html > > Sent from the Camel - Users mailing list archive at Nabble.com. >