Hi On Mon, May 9, 2011 at 3:06 PM, KARR, DAVID (ATTSI) <[email protected]> wrote: >> -----Original Message----- >> From: Sergey Beryozkin [mailto:[email protected]] >> Sent: Monday, May 09, 2011 2:30 AM >> To: [email protected] >> Subject: Re: Can CXF's "http:conduit" be configured to deal with self- >> signed certs or a custom verification? >> >> Hi >> >> One thing which is possible to do with CXF is to have multiple >> HTTPConduit configurations provided, one >> conduit can use SSL configuration relying on a self-signed cert, the >> other one - configuration with a a proper certificate. >> Each conduit bean can have a name attribute specifying a URI pattern >> (reg ex), ex: >> >> <http:conduit >> name="https://localhost:.*/production/customerservice/.*"> >> ... >> </http:conduit> >> >> <http:conduit name="https://localhost:.*/test/customerservice/.*"> >> ... >> </http:conduit> >> >> At runtime, the conduit matching request URIs used by the client code >> will be activated. >> >> What I don't know is how to configure an individual HTTPConduit to >> trust self-signed certificates. I've talked to Colm and explained that >> all or most of CXF tests have server certs signed but we also do >> generate the certs which are used to sign the server certs but keep >> them in the trust store and then we have Conduit configuration >> pointing to relevant key and trust stores, as in this file for ex: >> >> http://svn.apache.org/repos/asf/cxf/trunk/distribution/src/main/release >> /samples/jax_rs/basic_https/src/main/resources/ClientConfig.xml >> >> It appears it is currently not possible to explicitly configure >> HTTPConduit with a custom SSLSocketFactory, but at least it is >> possible to tell it to use the default SSLSocketFactory which might've >> been setup using >> >> HttpsURLConnection.setDefaultSSLSocketFactory(SSLSocketFactory) >> >> I've found this info here: >> >> http://www.frightanic.com/tag/ssl/ >> >> If anyone has more info then share it with us please > > So it appears that at the present time I would have no way to do this, if I > needed it. Correct? Just to clarify, again, I don't presently need this, > but I just finished work on a REST client project where we were using > HttpClient, but I had to configure the socket factory this way. I'm trying to > move my development group towards more use of Spring and CXF. Internally, we > have many servers with differing requirements. I think it's likely we'll run > into this situation again sometime in the future. >
I think the fact that HttpConduit can not be configured to deal with self-signed certs is not a problem. It's a restriction but configuring HttpConduit to check the key store and trust store is not a problem. In fact such a configuration will be identical between test and production cases, the only difference will be the location of key & trust stores and thus the whole HttpConduit config can be parameterized and reused between concrete HttpConduit beans. I haven't tried it with HttpConduit, but it appears one can override a VM wide SSLSocketFactory and tell HTTPConduit to use it. A more fine grained SSLSocketFactory registration is likely not possible at the moment, possibly because it HTTPConnection which is used under the hood, as Willem noted. Actually I think we have a JIRA to do with supporting Apache HttpClient. Cheers, Sergey
