package org.jfox.ejb.invoker.jrmp_ssl;
import java.rmi.server.RMIClientSocketFactory;
import java.net.Socket;
import java.io.IOException;
import java.io.Serializable;
import java.security.KeyStore;
import javax.net.ssl.TrustManagerFactory;
import javax.net.ssl.SSLContext;
import org.huihoo.jfox.logging.Logger;
public class RMISSLClientSocketFactory implements RMIClientSocketFactory, Serializable {
private String SSLTrustKeyFile = "jfox.truststore";
private String password = "jfox.org";
public RMISSLClientSocketFactory(String SSLKeyFile, String password) {
this.SSLTrustKeyFile = SSLKeyFile;
this.password = password;
}
public synchronized Socket createSocket(String host, int port) throws IOException {
try {
KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
keyStore.load(Thread.currentThread().getContextClassLoader().getResourceAsStream(SSLTrustKeyFile), password.toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext sslCtx = SSLContext.getInstance("TLS");
sslCtx.init(null, tmf.getTrustManagers(), null);
return sslCtx.getSocketFactory().createSocket(host,port);
}
catch (Exception e) {
Logger.getLogger(this.getClass().getName()).error("can not initializing SSLContext", e);
return null;
}
}
public static void main(String[] args) {
}
}