1 46 package org.mr.core.net; 47 48 import java.io.FileInputStream ; 49 import java.io.IOException ; 50 import java.net.ServerSocket ; 51 import java.net.Socket ; 52 import java.security.KeyStore ; 53 54 import javax.net.ServerSocketFactory; 55 import javax.net.SocketFactory; 56 import javax.net.ssl.KeyManager; 57 import javax.net.ssl.KeyManagerFactory; 58 import javax.net.ssl.SSLContext; 59 import javax.net.ssl.TrustManager; 60 import javax.net.ssl.TrustManagerFactory; 61 62 import org.apache.commons.logging.Log; 63 import org.apache.commons.logging.LogFactory; 64 import org.mr.MantaAgent; 65 import org.mr.core.configuration.ConfigManager; 66 import org.mr.core.log.StartupLogger; 67 68 78 public class MantaSSLFactory { 79 private static MantaSSLFactory instance; 80 81 public static MantaSSLFactory getInstance() { 82 synchronized (MantaSSLFactory.class) { 83 if (instance == null) { 84 instance = new MantaSSLFactory(); 85 } 86 } 87 return instance; 88 } 89 90 private ServerSocketFactory serverSocketFactory; 91 private SocketFactory socketFactory; 92 private Log log; 93 94 private MantaSSLFactory() { 95 this.log=LogFactory.getLog("MantaSSLFactory"); 96 97 98 ConfigManager config = MantaAgent.getInstance().getSingletonRepository().getConfigManager(); 99 100 String keystoreFile = 101 config.getStringProperty("network.ssl.keystore", "./config/keystore"); 102 String algorithm = config.getStringProperty("network.ssl.algorithm", "sunx509"); 103 String keystorePasswd = 104 config.getStringProperty("network.ssl.keystore_password", "mantaray"); 105 106 try { 107 KeyManagerFactory kmf; 111 KeyManager[] km; 112 KeyStore ks; 113 TrustManagerFactory tmf; 114 TrustManager[] tm; 115 SSLContext sslc; 116 117 ks = KeyStore.getInstance("JKS"); 121 122 ks.load(new FileInputStream (keystoreFile), 125 keystorePasswd.toCharArray()); 126 127 kmf = KeyManagerFactory.getInstance(algorithm); 130 131 kmf.init(ks, keystorePasswd.toCharArray()); 135 136 km = kmf.getKeyManagers(); 139 140 tmf = TrustManagerFactory.getInstance(algorithm); 144 145 tmf.init(ks); 150 151 tm = tmf.getTrustManagers(); 154 155 sslc = SSLContext.getInstance("TLS"); 159 160 sslc.init(km, tm, null); 165 this.serverSocketFactory = sslc.getServerSocketFactory(); 166 this.socketFactory = sslc.getSocketFactory(); 167 } catch (Exception e) { 168 StartupLogger.log.error("MantaSSLFactory ERROR Exception while " + 173 "initializing MantaSSLFactory: " + 174 e.getMessage(), "MantaSSLFactory"); 175 } 176 } 178 public ServerSocket createServerSocket() throws IOException { 179 if (this.serverSocketFactory != null) { 180 return this.serverSocketFactory.createServerSocket(); 181 } else { 182 return null; 183 } 184 } 185 186 public Socket createSocket() throws IOException { 187 if (this.socketFactory != null) { 188 return this.socketFactory.createSocket(); 189 } else { 190 return null; 191 } 192 } 193 194 }
| Popular Tags
|