Now as we have already configured MDB deployed on WebLogic Server to listen to JMS destination (in our example we configured Queue, it can be configured for Topic also in the same way), we will modify a bit to add SSL support. It can be done by following the simple steps:
Add the SSL JAR Files and New JNDI Properties File to the CLASSPATH
Add SSL JAR Files and New JNDI Properties File to the WebLogic Server CLASSPATH, by adding the following lines in front of the CLASSPATH variable value in startup script.
C:\tibco\ems\clients\java\jcert.jar;C:\tibco\ems\clients\java\jnet.jar;C:\tibco\ems\clients\java\jsse.jar;C:\tibco\ems\clients\java\tibcrypt.jar;C:\tibco\EMS\clients\java;
Create a new file named jndi.properties, add the following lines and save it to the directory C:\tibco\EMS\clients\java.
com.tibco.tibjms.naming.security_protocol=ssl
com.tibco.tibjms.naming.ssl_enable_verify_host=false
These properties specify that the "SSL" protocol should be used for JNDI lookups and that host verification is turned off (the client will trust any host). JNDI reads this file automatically and adds the properties to the environment of the initial JNDI context.
Configure the TIBCO Enterprise Message Service Server for SSL
In C:\tibco\EMS\bin\tibemsd.conf, add the following lines:
listen = ssl://localhost:7243
ssl_server_identity = certs/server.cert.pem
ssl_server_key = certs/server.key.pem
ssl_password = password
listen = tcp://localhost:7222
These lines explicitly set the tcp and ssl listen ports and specify the three required server-side SSL parameters identity, private key, and password.
Save the file, then stop and restart the TIBCO Enterprise Message Service server. When the server restarts, you should see messages like the following in the console window confirming SSL is enabled:
2010-07-18 10:00:05 Secure Socket Layer is enabled, using openSSL
2010-07-18 10:00:05 Accepting connections on ssl://
2010-07-18 10:00:05 Accepting connections on tcp://
Now modify the foreign JMSConnectionFactory in WebLogic to point to an SSLConnectionFactory
Open TIBCO_JMSServer properties from Services > Messaging > JMS Modules > MySystemModule > TIBCO_JMSServer of WebLogic Administration consoles and change the "JNDI Connection URL" to "tibjmsnaming://localhost:7243"
Modify the Example Client Program for SSL-Based Communication
In the "MyClient.java", change the value for "PROVIDER_URL" to "tibjmsnaming://localhost:7243"
We are now done with the modification for SSL support. To show that SSL communications are in fact occurring, you could remove the SSL settings you added to tibemsd.conf. Then restart the TIBCO Enterprise Message Service server and the WebLogic Server. If you check the WebLogic Server logs, you should see exceptions thrown indicating that it could not connect. If you now run the "MyClient.java" again, you should see that it throws an exception indicating that it could not connect to the server using the SSL protocol. Alternatively (or additionally), you could start the TIBCO Enterprise Message Service server from a command prompt window and turn SSL debug tracing on, as follows:
>tibemsd -ssl_debug_trace
Then, if you re-start WebLogic Server and re-run the test program, you will see SSL debugging output on the tibemsd console window.
this is really a helpful thing i was looking for quite a long...looks like you have been working on middleware architecture, can you please write something about the different architectures?
ReplyDelete/Thomas
can you post something about SOA
ReplyDeleteFor SOA, you can check this post: http://saumajitdas.blogspot.com/2011/09/soa-concept-and-role-of-esb-in-it-this.html
ReplyDeleteConfigured JMSAdapter to connect to Tibco EMS via SSL, got the following error, any ideas?
ReplyDelete<28/09/2011 10:32:37 AM EST>
<28/09/2011 10:32:37 AM EST> (JMSConnection.java:117)
at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createConnection(JmsManagedConnectionFactory.java:371)
at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createDefaultConnection(JmsManagedConnectionFactory.java:364)
at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createConnection(JmsManagedConnectionFactory.java:327)
at oracle.tip.adapter.jms.JmsManagedConnectionFactory.createManagedConnection(JmsManagedConnectionFactory.java:95)
at weblogic.connector.security.layer.AdapterLayer.createManagedConnection(AdapterLayer.java:803)
at weblogic.connector.outbound.ConnectionFactory.createResource(ConnectionFactory.java:91)
at weblogic.common.resourcepool.ResourcePoolImpl.makeResources(ResourcePoolImpl.java:1193)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResourceInternal(ResourcePoolImpl.java:395)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:332)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:315)
at weblogic.connector.outbound.ConnectionPool.reserveResource(ConnectionPool.java:620)
at weblogic.common.resourcepool.ResourcePoolImpl.reserveResource(ResourcePoolImpl.java:309)
at weblogic.connector.outbound.ConnectionManagerImpl.getConnectionInfo(ConnectionManagerImpl.java:365)
at weblogic.connector.outbound.ConnectionManagerImpl.getConnection(ConnectionManagerImpl.java:320)
at weblogic.connector.outbound.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:129)
at oracle.tip.adapter.jms.JmsConnectionFactory.getConnection(JmsConnectionFactory.java:93)
at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.createConsumer(JMSMessageConsumer.java:318)
at oracle.tip.adapter.jms.JMS.JMSMessageConsumer.init(JMSMessageConsumer.java:913)
at oracle.tip.adapter.jms.inbound.JmsConsumer.init(JmsConsumer.java:862)
at oracle.tip.adapter.jms.JmsEndpoint.run(JmsEndpoint.java:163)
at oracle.integration.platform.blocks.executor.WorkManagerExecutor$1.run(WorkManagerExecutor.java:105)
at weblogic.work.j2ee.J2EEWorkManager$WorkWithListener.run(J2EEWorkManager.java:183)
at weblogic.work.DaemonWorkThread.run(DaemonWorkThread.java:30)
Caused by: javax.jms.JMSSecurityException: Can not initialize SSL client: no trusted certificates are set
at com.tibco.tibjms.TibjmsxLinkSSL._initSSL(TibjmsxLinkSSL.java:298)
at com.tibco.tibjms.TibjmsxLinkSSL.connect(TibjmsxLinkSSL.java:399)
at com.tibco.tibjms.TibjmsConnection._create(TibjmsConnection.java:1002)
at com.tibco.tibjms.TibjmsConnection.(TibjmsConnection.java:2707)
at com.tibco.tibjms.TibjmsQueueConnection.(TibjmsQueueConnection.java:36)
at com.tibco.tibjms.TibjmsxCFImpl._createImpl(TibjmsxCFImpl.java:186)
at com.tibco.tibjms.TibjmsxCFImpl._createConnection(TibjmsxCFImpl.java:239)
at com.tibco.tibjms.TibjmsQueueConnectionFactory.createQueueConnection(TibjmsQueueConnectionFactory.java:87)
at oracle.tip.adapter.jms.JMS.JMSConnection.init(JMSConnection.java:197)
... 24 more
GREAT post. I found this as I was writing an article, albeit from a different viewpoint, about the same thing- www.inventhistory.com
ReplyDeleteClothing
Communication
Entertainment
Electric
Financial
Food Preparation
Green Technology
Software
Warfare
Transportation
Instruments
Office
Thanks for sharing this blog.This article gives lot of information.
ReplyDeleteTIBCO BW 6.X Online Training
TIBCO BW6.x training in ameerpet
TIBCO BW6.x training in hyderabad