While I hope others can help you with your problem, if you want to use SSL, I suspect you'd be better off with a standalone container[1] anyway--WAR file, web.xml, all that good stuff--this way at least you know what you're coding on top of. I just haven't researched SSL over embedded Jetty containers.
Glen [1] http://www.jroller.com/gmazza/entry/setting_up_ssl_and_basic Arul Dhesiaseelan wrote: > > Can someone look into this pls? > > I am close to making this work. But, figuring out what could be wrong is > still a puzzle to me. > > Thank you, > Arul > > Arul Dhesiaseelan wrote: >> Hello, >> >> I did some debugging using CXF 2.1.1 sources. I see the problem in >> line 201 in JettyHTTPServerEngineFactory.createJettyHTTPServerEngine() >> where it makes a call to ref.finalizeConfig(). >> >> In JettyHTTPServerEngine.finalizeConfig(), it calls method >> retrieveListenerFactory(). In this method the "tlsServerParameters" is >> null so the protocol is defaulted to "http" and finally throws the >> exception. >> >> This tells me that I am not correctly setting the TLSServerParameters >> to the JettyHTTPServerEngine in my code in the correct order. Or, I am >> not creating the JettyHTTPServerEngine instance properly. >> >> Does some one help me if I am missing something here? >> >> Appreciate your help. >> >> -Arul >> >> Arul Dhesiaseelan wrote: >>> Hello, >>> >>> I was trying to use CXF APIs to configure SSL on the service. But, I >>> am getting an illegal state exception: Port 9001 is configured with >>> wrong protocol "http" for "https://localhost:9001/hello" >>> >>> JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean(); >>> sf.setServiceClass(HelloWorld.class); >>> sf.getServiceFactory().setWrapped(true); >>> >>> QName name = new QName("http://test.com", "ws", ""); >>> sf.setServiceName(name); >>> sf.setAddress("https://localhost:9001/hello"); >>> >>> HelloWorld helloService = new HelloWorldImpl(); >>> >>> sf.getServiceFactory().setInvoker(new BeanInvoker(helloService)); >>> //org.apache.cxf.endpoint.Server server = sf.create(); >>> >>> JettyHTTPServerEngineFactory factory = >>> sf.getBus().getExtension(JettyHTTPServerEngineFactory.class); >>> >>> TLSServerParameters tlsParams = new TLSServerParameters(); >>> JettyHTTPServerEngine engine = null; >>> try { >>> engine = factory.createJettyHTTPServerEngine(9001, "https"); >>> KeyStore keyStore = KeyStore.getInstance("JKS"); >>> String trustpass = "password"; >>> File truststore = new >>> File("C:\\apache-cxf-2.1.1\\samples\\wsdl_first_https\\certs\\cherry.jks"); >>> >>> keyStore.load(new FileInputStream(truststore), >>> trustpass.toCharArray()); >>> KeyManagerFactory keyFactory = >>> KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); >>> keyFactory.init(keyStore, trustpass.toCharArray()); >>> KeyManager[] km = keyFactory.getKeyManagers(); >>> tlsParams.setKeyManagers(km); >>> >>> truststore = new >>> File("C:\\apache-cxf-2.1.1\\samples\\wsdl_first_https\\certs\\truststore.jks"); >>> >>> >>> keyStore.load(new FileInputStream(truststore), >>> trustpass.toCharArray()); >>> TrustManagerFactory trustFactory = >>> TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); >>> >>> trustFactory.init(keyStore); >>> TrustManager[] tm = trustFactory.getTrustManagers(); >>> tlsParams.setTrustManagers(tm); >>> FiltersType filter = new FiltersType(); >>> filter.getInclude().add(".*_EXPORT_.*"); >>> filter.getInclude().add(".*_EXPORT1024_.*"); >>> filter.getInclude().add(".*_WITH_DES_.*"); >>> filter.getInclude().add(".*_WITH_NULL_.*"); >>> filter.getExclude().add(".*_DH_anon_.*"); >>> tlsParams.setCipherSuitesFilter(filter); >>> ClientAuthentication ca = new ClientAuthentication(); >>> ca.setRequired(true); >>> ca.setWant(true); >>> tlsParams.setClientAuthentication(ca); >>> tlsParams.setSecureSocketProtocol("SSL"); >>> if (engine != null) { >>> engine.setTlsServerParameters(tlsParams); >>> } >>> } catch (KeyStoreException kse) { >>> } catch (NoSuchAlgorithmException nsa) { >>> } catch (FileNotFoundException fnfe) { >>> } catch (UnrecoverableKeyException uke) { >>> } catch (CertificateException ce) { >>> } catch (GeneralSecurityException gse) { >>> } catch (IOException ioe) { >>> } >>> >>> List<JettyHTTPServerEngine> engines = new >>> ArrayList<JettyHTTPServerEngine>(); >>> if (engine != null) >>> engines.add(engine); >>> factory.setEnginesList(engines); >>> org.apache.cxf.endpoint.Server server = sf.create(); >>> ((JettyHTTPServerEngine) ((JettyHTTPDestination) >>> server.getDestination()).getEngine()).setJettyHTTPServerEngineFactory(factory); >>> >>> >>> >>> String endpoint = >>> server.getEndpoint().getEndpointInfo().getAddress(); >>> System.out.println("Server started at " + endpoint); >>> >>> >>> But when I start the service, I get the below error: >>> >>> Jul 21, 2008 9:15:10 AM >>> org.apache.cxf.service.factory.ReflectionServiceFactoryBean >>> buildServiceFromClass >>> INFO: Creating Service {http://test.com}ws from class >>> com.test.cxf.HelloWorld >>> Exception in thread "main" java.lang.IllegalStateException: Port 9001 >>> is configured with wrong protocol "http" for >>> "https://localhost:9001/hello" >>> at >>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.retrieveEngine(JettyHTTPDestination.java:115) >>> >>> >>> at >>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.finalizeConfig(JettyHTTPDestination.java:134) >>> >>> >>> at >>> org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory.createDestination(JettyHTTPTransportFactory.java:123) >>> >>> >>> at >>> org.apache.cxf.transport.http_jetty.JettyHTTPTransportFactory.getDestination(JettyHTTPTransportFactory.java:103) >>> >>> >>> at >>> org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:90) >>> at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:69) >>> at >>> org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:115) >>> >>> >>> at >>> org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:164) >>> >>> >>> at com.test.cxf.Server.main(Server.java:104) >>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>> at >>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >>> >>> >>> at >>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >>> >>> >>> at java.lang.reflect.Method.invoke(Method.java:585) >>> at >>> com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) >>> >>> >>> Any thoughts on this issue? >>> >>> Thank you, >>> -Arul >>> >>> >>> ______________________________ >> > > > -- View this message in context: http://www.nabble.com/CXF-ssl-sample-using-CXF-APIs-tp18570914p18592456.html Sent from the cxf-user mailing list archive at Nabble.com.
