La conexión TLS con SSLSocket es lenta en el sistema operativo Android

Estoy desarrollando una aplicación de Android que utiliza SSLSocket para conectarse a un servidor. Este es el código que estoy usando:

// Connect
if (socket == null || socket.isClosed() || !socket.isConnected()) {
    if (socket != null && !socket.isClosed())
        socket.close();
    Log.i(getClass().toString(), "Connecting...");
    if (sslContext == null) {
        sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, trustAllCerts, new SecureRandom()); 
    }
    SSLSocketFactory socketFactory = sslContext.getSocketFactory();
    socket = (SSLSocket)socketFactory.createSocket(host, port);
    socket.setSoTimeout(20000);
    socket.setUseClientMode(true);
    connected = true;
    Log.i(getClass().toString(), "Connected.");
}

// Secure
if (connected) {
    Log.i(getClass().toString(), "Securing...");
    SSLSession session = socket.getSession();
    secured = session.isValid();
    if (secured) {
        Log.i(getClass().toString(), "Secured.");
    }
    else
        Log.i(getClass().toString(), "Securing failed.");
}

El problema es que se necesitan unos 5 segundos o más para hacer el protocolo de enlace TLS en la siguiente línea:

SSLSession session = socket.getSession();

Hice una aplicación de iPhone similar, el apretón de manos solo lleva 1 segundo allí, así que creo que el problema no está en el servidor al que me estoy conectando, sino en el código anterior. La conexión en sí es lo suficientemente rápida, solo el apretón de manos TLS es lento.

¿Alguien sabe si es normal en Android, o si no lo es, cómo hacerlo más rápido?

Gracias.

EDITADO el 21.01.11:

Descubrí que el apretón de manos es rápido cuando me conecto a otro servidor, por ejemplopaypal.com:443.

Pero antes me había conectado a otro servidor: un servicio .NET escrito por mí. Como dije antes, no pensé que el problema estuviera en ese servidor porque si me conecto a él con la aplicación de mi iPhone, el apretón de manos es rápido. Ahora no sé por qué es rápido en iPhone y lento en Android. Una vez establecida la conexión, lo único que hago en el servidor .NET es:

Console.WriteLine("New client connected.");
this.sslStream = new SslStream(tcpClient.GetStream(), true);
this.sslStream.ReadTimeout = 15000;
this.sslStream.WriteTimeout = 15000;

Console.WriteLine("Beginning TLS handshake...");
this.sslStream.AuthenticateAsServer(connection.ServerCertificate, false, SslProtocols.Tls, false);
Console.WriteLine("TLS handshake completed.");

Respuestas a la pregunta(4)

Su respuesta a la pregunta