how para capturar https con fiddler, en java

Estoy ejecutando el siguiente programa de Java en el IDE de Eclipse:

import java.net.*;
import java.io.*;

public class HH
{
    public static void main(String[] args) throws Exception
    {
        //if i comment out the system properties, and don't set any jvm arguments, the program runs and prints out the html fine.
        System.setProperty("http.proxyHost", "localhost"); 
        System.setProperty("http.proxyPort", "8888"); 
        System.setProperty("https.proxyHost", "localhost"); 
        System.setProperty("https.proxyPort", "8888"); 

        URL x = new URL("https://www.google.com");
        HttpURLConnection hc = (HttpURLConnection)x.openConnection();

        hc.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 6.0)
        AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2");

        InputStream is = hc.getInputStream();

        int u = 0;
        byte[] kj = new byte[1024];
        while((u = is.read(kj)) != -1)
        {
            System.out.write(kj,0,u);
        }
        is.close();
    }
}

Esto produce la siguiente excepción, si Fiddler está EN EJECUCIÓN, tanto durante la captura como sin capturar:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
    at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source)
    at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)
    at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)
    at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown ...

Si cierro el violinista, el programa funciona bien sin excepciones, produciendo el html en la url a la que me estoy conectando.

alternativamente, si especificoSystem.setProperty("https.proxyPort", "443");, en lugar de:System.setProperty("https.proxyPort", "8888");, se ejecuta e imprime todo el html, sin excepciones, incluso cuando Fiddler está abierto, en modo de captura, pero aún no hay captura desde el violinist

ntonces, si configuro estas propiedades del sistema a través de los argumentos jvm de eclipse como:-DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888, la misma excepción exacta ocurre nuevamente, siempre que la aplicación Fiddler se esté ejecutando, tanto en modo de captura como en modo de no captura. Si cierro Fiddler, el programa funcionará perfectamente bien.

Si uso:System.setProperty("http.proxyHost", "127.0.0.1"); en lugar de:System.setProperty("http.proxyHost", "localhost");, funciona bien con la aplicación Fiddler en ejecución, tanto en modo cap / no captura, pero también NO hay tráfico capturado.

¿Hay alguien ahí fuera capaz de capturar su propio tráfico https con Fiddler, NO a través de un navegador web, sino a través de un programa Java? ¿Cuáles son los argumentos de jvm, cómo lo configura para hacer esto? Gracia

Respuestas a la pregunta(8)

Su respuesta a la pregunta