Clone URL (Committers only): https://cms.apache.org/redirect?new=anonymous;action=diff;uri=http://openejb.apache.org/ejb-over-ssl.mdtext
Index: trunk/content/ejb-over-ssl.mdtext =================================================================== --- trunk/content/ejb-over-ssl.mdtext (revision 1358477) +++ trunk/content/ejb-over-ssl.mdtext (working copy) @@ -57,5 +57,28 @@ MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote"); -## Changing the Chipher Suite +## Changing the Cipher Suite +[This is a pending feature](https://issues.apache.org/jira/browse/OPENEJB-1856) +By default, the ejbds protocol connects with SSL_DH_anon_WITH_RC4_128_MD5. That means your connection is encrypted and the integrity of the transmission is verified. However, this only protects your from eavesdroppers, it offers absolutely zero protection from Man in the Middle attacks. This sort of attack could be pulled off without your knowledge and the attacker has the ability to intercept, monitor, and even modify your messages. If the attacker could control a router on your connection path, this attack could be trivially pulled off with nothing more but the OpenEJB server and client. +To secure your connections against this sort of attack, your client can cryptographically prove it's talking to the correct server before sending any data. To do this, simply select one or more secure cipher suites that your J2SE provider supports from [this listing](http://docs.oracle.com/cd/E19728-01/820-2550/cipher_suites.html). + +You must now instruct the client and server to use that suite. + +On the server: + + server = org.apache.openejb.server.ejbd.EjbServer + bind = 127.0.0.1 + port = 4203 + disabled = false + threads = 200 + backlog = 200 + secure = true + enabledCipherSuites = TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA + discovery = ejb:ejbds://{bind}:{port} + +On the client, you must supply a property: + + -Dopenejb.client.enabledCipherSuites=TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA + +The final piece is to make sure your server has available a private certificate that the the client can trust. This can be certificate from an authority or a self signed certificate. The javax.net.ssl.trustStore and javax.net.ssl.keyStore JVM properties [are used to set this up.](http://fusesource.com/docs/broker/5.3/security/SSL-SysProps.html) \ No newline at end of file