Foros del Web » Programación para mayores de 30 ;) » Java »

Escribir Socket SSL (Https) [PROXY]

Estas en el tema de Escribir Socket SSL (Https) [PROXY] en el foro de Java en Foros del Web. Hola foreros les hago una pregunta. Llevo muchos dias haciendo pruebas, buscando por media internet y no logro escribir un socket https. - Tengo un ...
  #1 (permalink)  
Antiguo 21/10/2013, 22:21
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 1
Antigüedad: 12 años
Puntos: 0
Pregunta Escribir Socket SSL (Https) [PROXY]

Hola foreros les hago una pregunta.

Llevo muchos dias haciendo pruebas, buscando por media internet y no logro escribir un socket https.

- Tengo un PROXY echo en java el cual responde peticiones http, es decir un cliente se conecta a mi proxy y le envia la pagina solicitada. El problema es cuando un cliente ingresa una web como por ejemplo GOOGLE (https)... A este cliente no puedo escribirlo pero si leerlo (encabezados y body) por medio de X509TrustManager.

Pero como escribo un sockets https? D:


Este es el codigo para obtener el body de web https:

Código:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class SSL_Prueba {

    public static void main(String[] args) {

        try {
            SSLContext sslContext = SSLContext.getInstance("SSL");
            
            // set up a TrustManager that trusts everything
            sslContext.init(null, new TrustManager[]{new X509TrustManager() {
                    @Override
                    public X509Certificate[] getAcceptedIssuers() {
                        //System.out.println("getAcceptedIssuers =============");
                        return null;
                    }

                    @Override
                    public void checkClientTrusted(X509Certificate[] certs,
                            String authType) {
                        // System.out.println("checkClientTrusted =============");
                    }

                    @Override
                    public void checkServerTrusted(X509Certificate[] certs,
                            String authType) {
                        //System.out.println("checkServerTrusted =============");
                    }
                }}, new SecureRandom());
            

            
            HttpsURLConnection.setDefaultSSLSocketFactory(
                    sslContext.getSocketFactory());

            HttpsURLConnection
                    .setDefaultHostnameVerifier(new HostnameVerifier() {
                @Override
                public boolean verify(String arg0, SSLSession arg1) {
                    System.out.println("hostnameVerifier =============");
                    return true;
                }
            });

            URL url = new URL("https://www.google.com.ar");
            URLConnection conn = url.openConnection();
            BufferedReader reader =
                    new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line, result = null;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

        } catch (NoSuchAlgorithmException | KeyManagementException | IOException e) {
            System.out.println(e.getMessage());
        }
    }
}
Saludos!

Última edición por tincho_lp; 21/10/2013 a las 22:35

Etiquetas: https, socket, ssl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:19.