package fitnesse.socketservice; import java.io.IOException; import java.net.ServerSocket; import java.util.logging.Level; import java.util.logging.Logger; import javax.net.ssl.SSLServerSocket; import javax.net.ssl.SSLServerSocketFactory; public class SslServerSocketFactory implements ServerSocketFactory { private static final Logger LOG = Logger.getLogger(SslServerSocketFactory.class.getName()); private final boolean needClientAuth; private final String sslParameterClassName; public SslServerSocketFactory(boolean needClientAuth, String sslParameterClassName) { this.needClientAuth = needClientAuth; this.sslParameterClassName = sslParameterClassName; } @Override public ServerSocket createServerSocket(int port) throws IOException { ServerSocket socket; LOG.log(Level.FINER, "Creating SSL socket on port: " + port); SSLServerSocketFactory ssf = SslParameters.setSslParameters(sslParameterClassName).createSSLServerSocketFactory(); socket = ssf.createServerSocket(port); if (needClientAuth) { ((SSLServerSocket) socket).setNeedClientAuth(true); } return socket; } }