1 30 31 package org.apache.commons.httpclient.ssl; 32 33 import java.io.IOException ; 34 import java.io.InputStream ; 35 import java.net.ServerSocket ; 36 import java.net.URL ; 37 import java.security.KeyStore ; 38 39 import javax.net.ServerSocketFactory; 40 41 import org.apache.commons.httpclient.server.SimpleSocketFactory; 42 import org.apache.commons.logging.Log; 43 import org.apache.commons.logging.LogFactory; 44 45 import com.sun.net.ssl.KeyManager; 46 import com.sun.net.ssl.KeyManagerFactory; 47 import com.sun.net.ssl.SSLContext; 48 49 54 public class SimpleSSLSocketFactory implements SimpleSocketFactory { 55 56 private static final Log LOG = LogFactory.getLog(SimpleSocketFactory.class); 57 58 private static SSLContext SSLCONTEXT = null; 59 60 private static SSLContext createSSLContext() { 61 try { 62 ClassLoader cl = SimpleSocketFactory.class.getClassLoader(); 63 URL url = cl.getResource("org/apache/commons/httpclient/ssl/simpleserver.keystore"); 64 KeyStore keystore = KeyStore.getInstance("jks"); 65 InputStream is = null; 66 try { 67 is = url.openStream(); 68 keystore.load(is, "nopassword".toCharArray()); 69 } finally { 70 if (is != null) is.close(); 71 } 72 KeyManagerFactory kmfactory = KeyManagerFactory.getInstance( 73 KeyManagerFactory.getDefaultAlgorithm()); 74 kmfactory.init(keystore, "nopassword".toCharArray()); 75 KeyManager[] keymanagers = kmfactory.getKeyManagers(); 76 SSLContext sslcontext = SSLContext.getInstance("TLS"); 77 sslcontext.init(keymanagers, null, null); 78 return sslcontext; 79 } catch (Exception ex) { 80 LOG.error(ex.getMessage(), ex); 83 throw new IllegalStateException (ex.getMessage()); 84 } 85 86 } 87 88 private static SSLContext getSSLContext() { 89 if (SSLCONTEXT == null) { 90 SSLCONTEXT = createSSLContext(); 91 } 92 return SSLCONTEXT; 93 } 94 95 public SimpleSSLSocketFactory() { 96 super(); 97 } 98 99 public ServerSocket createServerSocket(int port) throws IOException { 100 ServerSocketFactory socketfactory = getSSLContext().getServerSocketFactory(); 101 return socketfactory.createServerSocket(port); 102 } 103 104 } 105 | Popular Tags |