1 22 package org.jboss.test.jrmp.test; 23 24 import java.net.URL ; 25 import java.security.cert.Certificate ; 26 import java.security.cert.X509Certificate ; 27 import javax.naming.InitialContext ; 28 import javax.net.ssl.HandshakeCompletedEvent; 29 import javax.net.ssl.HandshakeCompletedListener; 30 import javax.net.ssl.SSLPeerUnverifiedException; 31 import javax.net.ssl.SSLSession; 32 33 import junit.framework.Test; 34 import org.jboss.security.ssl.RMISSLClientSocketFactory; 35 import org.jboss.test.JBossTestCase; 36 import org.jboss.test.jrmp.interfaces.StatelessSession; 37 import org.jboss.test.jrmp.interfaces.StatelessSessionHome; 38 39 46 public class SSLSocketsUnitTestCase extends JBossTestCase 47 implements HandshakeCompletedListener 48 { 49 private String cipherSuite; 50 private Certificate [] localCerts; 51 private Certificate [] peerCerts; 52 53 58 public SSLSocketsUnitTestCase(String name) 59 { 60 super(name); 61 } 62 63 68 public void testClientCertSSLAccess() throws Exception 69 { 70 log.info("+++ testClientCertSSLAccess"); 71 String res = super.getResourceURL("test-configs/tomcat-ssl/conf/client.keystore"); 72 log.info("client.keystore: "+res); 73 URL clientURL = new URL (res); 74 System.setProperty("javax.net.ssl.trustStore", clientURL.getFile()); 75 System.setProperty("javax.net.ssl.trustStorePassword", "unit-tests-client"); 76 System.setProperty("javax.net.ssl.keyStore", clientURL.getFile()); 77 System.setProperty("javax.net.ssl.keyStorePassword", "unit-tests-client"); 78 System.getProperties().put(RMISSLClientSocketFactory.HANDSHAKE_COMPLETE_LISTENER, this); 79 80 InitialContext jndiContext = new InitialContext (); 81 log.debug("Lookup StatelessSessionWithSSL"); 82 Object obj = jndiContext.lookup("StatelessSessionWithSSL"); 83 StatelessSessionHome home = (StatelessSessionHome)obj; 84 log.debug("Found StatelessSessionWithSSL Home"); 85 StatelessSession bean = home.create(); 86 log.debug("Created StatelessSessionWithSSL"); 87 String echo = bean.echo("jrmp"); 89 log.debug("bean.echo(jrmp) = " + echo); 90 bean.remove(); 91 92 sleep(2000); 94 assertNotNull("cipherSuite != null",cipherSuite); 95 96 assertTrue("CipherSuite = TLS_DHE_DSS_WITH_AES_128_CBC_SHA", 98 cipherSuite.equals("TLS_DHE_DSS_WITH_AES_128_CBC_SHA")); 99 X509Certificate localCert = (X509Certificate ) localCerts[0]; 100 assertTrue("LocalCert.SubjectDN = CN=unit-tests-client, OU=JBoss Inc., O=JBoss Inc., ST=Washington, C=US", 101 localCert.getSubjectDN().getName().equals("CN=unit-tests-client, OU=JBoss Inc., O=JBoss Inc., ST=Washington, C=US")); 102 } 103 104 public void handshakeCompleted(HandshakeCompletedEvent event) 105 { 106 log.info("handshakeCompleted, event="+event); 107 try 108 { 109 cipherSuite = event.getCipherSuite(); 110 log.info("CipherSuite: "+cipherSuite); 111 localCerts = event.getLocalCertificates(); 112 log.info("LocalCertificates:"); 113 for(int n = 0; n < localCerts.length; n ++) 114 { 115 Certificate cert = localCerts[n]; 116 log.info(cert); 117 } 118 log.info("PeerCertificates:"); 119 peerCerts = event.getPeerCertificates(); 120 for(int n = 0; n < peerCerts.length; n ++) 121 { 122 Certificate cert = peerCerts[n]; 123 log.info(cert); 124 } 125 126 SSLSession session = event.getSession(); 127 String [] names = session.getValueNames(); 128 for(int n = 0; n < names.length; n ++) 129 { 130 String name = names[n]; 131 log.info(name+"="+session.getValue(name)); 132 } 133 } 134 catch (SSLPeerUnverifiedException e) 135 { 136 log.error("Failed to get peer cert", e); 137 } 138 } 139 140 public static Test suite() throws Exception 141 { 142 return getDeploySetup(SSLSocketsUnitTestCase.class, "jrmp-comp.jar"); 143 } 144 145 } 146 | Popular Tags |