Actually, we may not be able to support SSL with embedded Jetty anyway--look
at this thread, as well as a J2SE 6.0 based alternative solution:

http://www.nabble.com/Help-needed-for-SSL-and-Basic-authentication-tt17761832.html

HTH,
Glen


Glen Mazza wrote:
> 
> 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-tp18570914p18592620.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to