package org.jfox.ejb.invoker.jrmp_ssl;
import java.rmi.server.RMIServerSocketFactory;
import java.net.ServerSocket;
import java.io.IOException;
import java.io.Serializable;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import org.huihoo.jfox.logging.Logger;
public class RMISSLServerSocketFactory implements RMIServerSocketFactory, Serializable {
private String SSLKeyFile = "jfox.keystore";
private String password = "jfox.org";
public RMISSLServerSocketFactory(String SSLKeyFile, String password) {
this.SSLKeyFile = SSLKeyFile;
this.password = password;
}
public ServerSocket createServerSocket(int port) throws IOException {
try {
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(SSLKeyFile), password.toCharArray());
KeyManagerFactory keyMgr = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
keyMgr.init(keyStore, password.toCharArray());
SSLContext sslCtx = SSLContext.getInstance("TLS");
sslCtx.init(keyMgr.getKeyManagers(), null, null);
return sslCtx.getServerSocketFactory().createServerSocket(port);
}
catch (Exception e) {
Logger.getLogger(this.getClass().getName()).error("can not initializing SSLContext", e);
return null;
}
}
public static void main(String[] args) {
}
}