Hi Sergey,

I got it to work! I almost can't believe that it does but I'm staring at the 
HTTPS response page as I'm typing this email. Thank you for pointing in me in 
the right direction.

Of course, I had to take a detour to learn about spring during which I spent at 
least an hour of time chasing my tail till I realized that I had to enable this 
feature in Karaf with:

>feature:install spring
>feature:install spring-dm

I have included these details and the contents of my META-INF/spring/spring.xml 
file below in the hope that this will be useful to someone else. I reused the 
keystore in samples/jax_rs/basic_https. I don't however fully understand why 
this solution works. My best guess, based on my feeble understanding of the 
BusFactory code, is that it somehow knows how to search the for the SpringBus 
instance I loaded via the bean in my spring DM file. I still haven't figured 
out how to run this code in the debugger (I'm very new to development in the 
Java world) but that will be my next challenge. In the meanwhile if you can 
help shed some light on why it's working I would appreciate it.

Here's my spring.xml:


<?xml version="1.0" encoding="UTF-8"?>

<!--

  Licensed to the Apache Software Foundation (ASF) under one

  or more contributor license agreements. See the NOTICE file

  distributed with this work for additional information

  regarding copyright ownership. The ASF licenses this file

  to you under the Apache License, Version 2.0 (the

  "License"); you may not use this file except in compliance

  with the License. You may obtain a copy of the License at


  http://www.apache.org/licenses/LICENSE-2.0


  Unless required by applicable law or agreed to in writing,

  software distributed under the License is distributed on an

  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY

  KIND, either express or implied. See the License for the

  specific language governing permissions and limitations

  under the License.

-->

<beans xmlns="http://www.springframework.org/schema/beans";

xmlns:beans="http://www.springframework.org/schema/beans";

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";

xmlns:osgi="http://www.springframework.org/schema/osgi";

xmlns:sec="http://cxf.apache.org/configuration/security";

xmlns:http="http://cxf.apache.org/transports/http/configuration";

xmlns:httpj="http://cxf.apache.org/transports/http-jetty/configuration";

xsi:schemaLocation="

http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd

    http://www.springframework.org/schema/osgi 
http://www.springframework.org/schema/osgi/spring-osgi.xsd

    http://cxf.apache.org/configuration/security 
http://cxf.apache.org/schemas/configuration/security.xsd

http://cxf.apache.org/transports/http/configuration 
http://cxf.apache.org/schemas/configuration/http-conf.xsd

http://cxf.apache.org/transports/http-jetty/configuration 
http://cxf.apache.org/schemas/configuration/http-jetty.xsd";>


<!--<import resource="classpath:META-INF/cxf/cxf.xml"/>

<import resource="classpath:META-INF/cxf/cxf-extension-xml.xml"/>

<import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>-->

<!-- Sanity check to make sure Spring DM is working.  -->

<bean id="hello" 
class="org.apache.cxf.dosgi.samples.greeter.impl.rest.PrintHello" 
init-method="init"/>

<bean id="cxf" class="org.apache.cxf.bus.spring.SpringBus" 
destroy-method="shutdown"/>


    <bean id="org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor"

        class="org.apache.cxf.bus.spring.BusWiringBeanFactoryPostProcessor"/>

    <bean id="org.apache.cxf.bus.spring.Jsr250BeanPostProcessor"

        class="org.apache.cxf.bus.spring.Jsr250BeanPostProcessor"/>

    <bean id="org.apache.cxf.bus.spring.BusExtensionPostProcessor"

        class="org.apache.cxf.bus.spring.BusExtensionPostProcessor"/>


<httpj:engine-factory bus="cxf">

<httpj:engine port="9093">

<httpj:tlsServerParameters>

<sec:keyManagers keyPassword="skpass">

<sec:keyStore file="certs/serviceKeystore.jks" password="sspass" type="JKS"/>

</sec:keyManagers>

<sec:trustManagers>

<sec:keyStore file="certs/serviceKeystore.jks" password="sspass" type="JKS"/>

</sec:trustManagers>

<sec:cipherSuitesFilter>

<!-- these filters ensure that a ciphersuite with

  export-suitable or null encryption is used,

  but exclude anonymous Diffie-Hellman key change as

  this is vulnerable to man-in-the-middle attacks -->

<sec:include>.*_EXPORT_.*</sec:include>

<sec:include>.*_EXPORT1024_.*</sec:include>

<sec:include>.*_WITH_DES_.*</sec:include>

<sec:include>.*_WITH_AES_.*</sec:include>

<sec:include>.*_WITH_NULL_.*</sec:include>

<sec:exclude>.*_DH_anon_.*</sec:exclude>

</sec:cipherSuitesFilter>

<sec:clientAuthentication want="false" required="false"/>

</httpj:tlsServerParameters>

</httpj:engine>

</httpj:engine-factory>

<!--<httpj:engine-factory bus="cxf">

    <httpj:identifiedTLSServerParameters id="secure">

      <httpj:tlsServerParameters>

        <sec:keyManagers keyPassword="skpass">

          <sec:keyStore type="JKS" password="sspass" 
file="certs/serviceKeystore.jks"/>

        </sec:keyManagers>

      </httpj:tlsServerParameters>

    </httpj:identifiedTLSServerParameters>

    <httpj:engine port="9093">

      <httpj:tlsServerParametersRef id="secure" />

      <httpj:threadingParameters minThreads="5"

                                maxThreads="15" />

      <httpj:connector>

        <beans:bean class="org.eclipse.jetty.server.bio.SocketConnector">

          <beans:property name="port" value="9093" />

        </beans:bean>

      </httpj:connector>

      <httpj:handlers>

        <beans:bean class="org.eclipse.jetty.server.handler.DefaultHandler"/>

      </httpj:handlers>

      <httpj:sessionSupport>true</httpj:sessionSupport>

    </httpj:engine>

</httpj:engine-factory>-->

<osgi:service 
interface="org.apache.cxf.dosgi.samples.greeter.rest.GreeterService">

<osgi:service-properties>

<entry key="service.exported.interfaces" value="*" />

<entry key="service.exported.configs" value="org.apache.cxf.rs" />

<entry key="service.exported.intents" value="HTTP" />

<entry key="org.apache.cxf.rs.address" value="https://localhost:9093/greeter"; />

</osgi:service-properties>

<bean class="org.apache.cxf.dosgi.samples.greeter.impl.rest.GreeterServiceImpl" 
/>

</osgi:service>

</beans>


From: "Sergey Beryozkin-5 [via CXF]" 
<ml-node+s547215n572141...@n5.nabble.com<mailto:ml-node+s547215n572141...@n5.nabble.com>>
Date: Thursday, January 10, 2013 9:29 AM
To: GE GE <am...@ge.com<mailto:am...@ge.com>>
Subject: Re: SSL with DOSGi

On 10/01/13 17:27, Sergey Beryozkin wrote:

> Hi
> On 10/01/13 17:07, geecxf wrote:
>> Hi Sergey,
>>
>> Thanks for the prompt response. The more I read through the CXF DOSGi
>> code the more your revelation makes sense. It seems like the only
>> configuration file that affects cxf.dosgi.dsw is the cxf-dsw.cfg
>> through Felix FileInstall. However, I can't see any properties that
>> affects the default bus when using an absolute addresses.
>>
>> So it looks like I would have to affect the BusFactory class which
>> seems to read some bus configuration from external sources. Which begs
>> the question:
>>
>> Could I alter the default bus configuration to support https though a
>> META-INF/cxf/cxf.xml file in the manner described here
>> http://cxf.apache.org/docs/configuration.html? Then build a new
>> cxf-dosgi-ri-singlebundle-distribution that by default will create
>> HTTPS endpoints instead of HTTP when specifying absolute addresses?
>> Would this approach work?
>>
>
> I wonder if that will work even if you declare cxf:bus in your
> application context, alongside http-jetty configuration and DOSGi will
> pick up it, but I'm not sure; you may need to experiment, but I doubt
> that rebuilding a single bundle distro would be the right approach,
> ideally, there was some way to get DOSGi picking up the SSL-aware
> default bus
>> My follow-up question is that if the approach described above works,
>> it is obviously a hack. Was there a vision for SSL support when using
>> absolute addresses? What would such a feature look like? Or is any
>> solution OK as long as it does not violate the DOSGi specification?
>
> As far as I recall, no support for HTTPS was on the map at a time,
>
> By the way, why using OSGI HTTP Service does meet the requirements ?
>
does *not* meet ?

> Cheers, Sergey
>
>>
>> Thanks,
>>
>> D
>>
>> From: "Sergey Beryozkin-5 [via
>> CXF]"<[hidden 
>> email]</user/SendEmail.jtp?type=node&node=5721416&i=0><mailto:[hidden 
>> email]</user/SendEmail.jtp?type=node&node=5721416&i=1>>>
>>
>> Date: Thursday, January 10, 2013 8:31 AM
>> To: GE GE<[hidden 
>> email]</user/SendEmail.jtp?type=node&node=5721416&i=2><mailto:[hidden 
>> email]</user/SendEmail.jtp?type=node&node=5721416&i=3>>>
>> Subject: Re: SSL with DOSGi
>>
>> Or rather, no one has looked yet into trying to get the bus aware of
>> such configuration found and selected somehow when absolute
>> org.apache.cxf.rs/ws.addresses are used :-)
>>
>>
>>
>>
>> --
>> View this message in context:
>> http://cxf.547215.n5.nabble.com/SSL-with-DOSGi-tp5721344p5721413.html
>> Sent from the cxf-user mailing list archive at Nabble.com.
>



________________________________
If you reply to this email, your message will be added to the discussion below:
http://cxf.547215.n5.nabble.com/SSL-with-DOSGi-tp5721344p5721416.html
To unsubscribe from SSL with DOSGi, click 
here<http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5721344&code=YW1pcmlAZ2UuY29tfDU3MjEzNDR8LTE3ODgxMjU0NzM=>.
NAML<http://cxf.547215.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>




--
View this message in context: 
http://cxf.547215.n5.nabble.com/SSL-with-DOSGi-tp5721344p5721433.html
Sent from the cxf-user mailing list archive at Nabble.com.

Reply via email to