SimpleTLSServer.java (Código fuente)

import javax.net.ssl.*;
import java.io.*;
import java.security.KeyStore;

public class SimpleTLSServer {
    public static void main(String[] args) {
        try {
            // Set up the key store
            System.setProperty("javax.net.ssl.keyStore", "keystore.p12");
            System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
            System.setProperty("javax.net.ssl.keyStorePassword", "tmztmz");

            // Load the keystore
            KeyStore keyStore = KeyStore.getInstance("PKCS12");
            FileInputStream fileInputStream = new FileInputStream(System.getProperty("javax.net.ssl.keyStore"));
            keyStore.load(fileInputStream, System.getProperty("javax.net.ssl.keyStorePassword").toCharArray());

            // Create the key manager factory
            KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
            keyManagerFactory.init(keyStore, System.getProperty("javax.net.ssl.keyStorePassword").toCharArray());

            // Create the SSL context
            SSLContext sslContext = SSLContext.getInstance("TLS");
            sslContext.init(keyManagerFactory.getKeyManagers(), null, null);

            // Create the server socket
            SSLServerSocketFactory sslServerSocketFactory = sslContext.getServerSocketFactory();
            SSLServerSocket sslServerSocket = (SSLServerSocket) sslServerSocketFactory.createServerSocket(32345);

            // Wait for connections
            while (true) {
                SSLSocket sslSocket = (SSLSocket) sslServerSocket.accept();

                // Send the response
                PrintWriter out = new PrintWriter(sslSocket.getOutputStream(), true);
                out.println("Hola mundo!");

                // Close the connection
                sslSocket.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}