Done...
Also, looks like we need to look into the ActiveMQInitialContextFactory
class, so that we can retrieve ActiveMQSslConnectionFactory via JNDI....

On Wed, May 28, 2008 at 5:57 PM, Rob Davies <[EMAIL PROTECTED]> wrote:

> Sudip,
>
> could you add the Apache 2.0 licence to the ActiveMQSslConnectionFactoryx
> and re-attach it - ticking the ASF granted licence?
> Will probably incorporate your enhancement into the
> ActiveMQSslConnectionFactory class though
>
>
> cheers,
>
> Rob
>
> http://open.iona.com/products/enterprise-activemq
> http://rajdavies.blogspot.com/
>
>
>
> On 28 May 2008, at 21:25, sudip shrestha wrote:
>
>  have created JIRA for this:
>> https://issues.apache.org/activemq/browse/AMQ-1754.
>> Thanks,
>> Sudip
>>
>> On Wed, May 28, 2008 at 2:54 PM, sudip shrestha <[EMAIL PROTECTED]> wrote:
>>
>>  I have created a class org.apache.activemq.ActiveMQSslConnectionFactoryx
>>> ()
>>> that extends org.apache.activemq.ActiveMQSslConnectionFactory which
>>> provides
>>> a constructor public ActiveMQSslConnectionFactoryx(String keyStore,
>>> String
>>> keyStorePassword, String trustStore) so that you can provide the keyStore
>>> (client.ks) /trustStore (client.ts) which you can create as instructed by
>>> this page (http://activemq.apache.org/how-do-i-use-ssl.html).  It has
>>> private methods getTrustManagers and getKeyManagers which plug into
>>> org.apache.activemq.ActiveMQSslConnectionFactory's
>>> setKeyAndTrustManagers()
>>> method as soon as ActiveMQSslConnectionFactoryx's constructor is
>>> called....
>>> So, this class encapsulates all the needed ssl/kestore functionality and
>>> I
>>> have got this working with my test environment.  This will save the user
>>> from having to set the system properties
>>> javax.net.ssl.keyStore=/path/to/client.ks,
>>> javax.net.ssl.keyStorePassword=password,
>>> javax.net.ssl.trustStore=/path/to/client.ts as suggested in the page (
>>> http://activemq.apache.org/how-do-i-use-ssl.html).
>>>
>>> Maybe a better thing would be to modify
>>> org.apache.activemq.ActiveMQSslConnectionFactory class itself and provide
>>> the constructor, getManagers, setManagers methods as I suggested and use
>>> the
>>> original class itself.
>>>
>>> I would like to contribute the following code for this purpose:
>>>
>>>
>>> ==============================================================================
>>> package org.apache.activemq;
>>>
>>> import java.io.*;
>>> import java.security.*;
>>> import javax.net.ssl.*;
>>> import javax.jms.*;
>>> import org.apache.commons.ssl.*;
>>>
>>> /**
>>> * @author Sudip Shrestha
>>> *
>>> * Class that extends ActiveMQSslConnectionFactory so that it can use
>>> client.ks/client.ts files without having to set
>>> * System Properties: javax.net.ssl.keyStore=/path/to/client.ks,
>>> javax.net.ssl.keyStorePassword=password,
>>> * javax.net.ssl.trustStore=/path/to/client.ts.
>>> */
>>> public class ActiveMQSslConnectionFactoryx extends
>>> ActiveMQSslConnectionFactory
>>> {
>>>   private String keyStore;
>>>   private String keyStorePassword;
>>>   private String trustStore;
>>>   public ActiveMQSslConnectionFactoryx()
>>>   {
>>>       super();
>>>       keyStore = keyStorePassword = trustStore = "";
>>>   }
>>>
>>>   public ActiveMQSslConnectionFactoryx(String keyStore, String
>>> keyStorePassword, String trustStore)
>>>       throws java.security.NoSuchAlgorithmException,
>>> java.security.KeyStoreException,
>>>                  java.io.IOException,
>>> java.security.GeneralSecurityException
>>>       {
>>>               super();
>>>       this.keyStore = keyStore;
>>>       this.keyStorePassword = keyStorePassword;
>>>       this.trustStore = trustStore;
>>>       setKeyAndTrustManagers( getKeyManagers( ),getTrustManagers( ),new
>>> java.security.SecureRandom() );
>>>       }
>>>
>>>
>>>   private TrustManager[] getTrustManagers() throws
>>> java.security.NoSuchAlgorithmException, java.security.KeyStoreException,
>>>               java.io.IOException, java.security.GeneralSecurityException
>>>       {
>>>       System.out.println( "Initiating TrustManagers" );
>>>
>>>       KeyStore ks = KeyStore.getInstance("JKS");
>>>               ks.load(new FileInputStream( trustStore ), null );
>>>       TrustManagerFactory tmf =
>>>
>>> TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
>>>       tmf.init(ks);
>>>
>>>       System.out.println( "Initiated TrustManagers" );
>>>
>>>       return tmf.getTrustManagers();
>>>       }
>>>
>>>
>>>   private KeyManager[] getKeyManagers()
>>>               throws java.security.NoSuchAlgorithmException,
>>> java.security.KeyStoreException, java.security.GeneralSecurityException,
>>>                               java.security.cert.CertificateException,
>>> java.io.IOException, java.security.UnrecoverableKeyException
>>>       {
>>>       System.out.println( "Initiating KeyManagers" );
>>>
>>>       KeyStore ks = KeyStore.getInstance("JKS");
>>>       ks.load(new FileInputStream( keyStore ),
>>> keyStorePassword.toCharArray() );
>>>       KeyManagerFactory kmf = KeyManagerFactory.getInstance(
>>> KeyManagerFactory.getDefaultAlgorithm() );
>>>       kmf.init( ks, keyStorePassword.toCharArray());
>>>
>>>       System.out.println( "Initiated KeyManagers" );
>>>
>>>       return kmf.getKeyManagers();
>>>
>>>       }
>>> }
>>>
>>> Thanks,
>>> Sudip Shrestha
>>> Omaha, NE
>>>
>>>
>>> ==============================================================================
>>>
>>>
>>>
>>> I think it should be provided in the next release of
>>>
>>>
>>> On Thu, May 15, 2008 at 10:38 AM, Hiram Chirino <[EMAIL PROTECTED]>
>>> wrote:
>>>
>>>  I like that idea...
>>>>
>>>> On Wed, May 14, 2008 at 3:33 PM, sudip shrestha <[EMAIL PROTECTED]>
>>>> wrote:
>>>>
>>>>> I was wondering maybe extending the
>>>>> org.apache.activemq.ActiveMQSslConnectionFactory class and providing
>>>>>
>>>> hooks
>>>>
>>>>> to set KeyManagers and TrustManagers will do the trick....
>>>>>
>>>>> On Wed, May 14, 2008 at 7:00 AM, Gary Tully <[EMAIL PROTECTED]>
>>>>>
>>>> wrote:
>>>>
>>>>>
>>>>>  it should respond to the javax.net.ssl.* system properties[1] but
>>>>>> these may have too far reaching an effect.
>>>>>>
>>>>>> [1]
>>>>>>
>>>>>>
>>>> http://java.sun.com/j2se/1.5.0/docs/guide/security/jsse/JSSERefGuide.html#Customization
>>>>
>>>>>
>>>>>> 2008/5/12 sudip shrestha <[EMAIL PROTECTED]>:
>>>>>>
>>>>>>> Is it possible to do this with the current version of Activemq with
>>>>>>>
>>>>>> tomcat?
>>>>>>
>>>>>>> Any suggestion is highly appreciated. Thanks.
>>>>>>>
>>>>>>> On Thu, May 8, 2008 at 10:21 AM, sudip shrestha <[EMAIL PROTECTED]>
>>>>>>>
>>>>>> wrote:
>>>>>>
>>>>>>>
>>>>>>>  Is it possible to setup jndi with ssl connection for Activemq in
>>>>>>>>
>>>>>>> tomcat.
>>>>
>>>>> If so where do I define the client.ks/client.ts files?
>>>>>>>>
>>>>>>>> My jndi config in context.xml file:
>>>>>>>> <Context antiJARLocking="true">
>>>>>>>>  <Resource
>>>>>>>>       name="jms/ConnectionFactory"
>>>>>>>>       auth="Container"
>>>>>>>>       type="org.apache.activemq.ActiveMQConnectionFactory"
>>>>>>>>       description="JMS Connection Factory"
>>>>>>>>       factory="org.apache.activemq.jndi.JNDIReferenceFactory"
>>>>>>>>       brokerURL="ssl://localhost:61617"
>>>>>>>>       brokerName="LocalActiveMQBroker"
>>>>>>>>       useEmbeddedBroker="false"/>
>>>>>>>>
>>>>>>>> </Context>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Regards,
>>>> Hiram
>>>>
>>>> Blog: http://hiramchirino.com
>>>>
>>>> Open Source SOA
>>>> http://open.iona.com
>>>>
>>>>
>>>
>>>
>
>
>
>

Reply via email to