Je suis en cours d'exécution java suivantes dans le programme de l'IDE 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();
}
}
Ce produit est le suivant exception, si fiddler est en cours d'EXÉCUTION, à la fois lors de la capture, et pas de capture:
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 je ferme les violoneux, le programme fonctionne très bien sans aucune exception, de produire le code html sur l'url que je me connecte.
sinon, si je spécifie System.setProperty("https.proxyPort", "443");
, au lieu de: System.setProperty("https.proxyPort", "8888");
, il s'exécute et affiche tout le code html, sans exceptions, même si fiddler est ouvert, dans le mode de capture, mais il n'y a pas encore de capture de fiddler à tous.
Alors si j'ai mis ces propriétés système par le biais de l'éclipse de la jvm arguments comme: -DproxySet=true -DproxyHost=127.0.0.1 -DproxyPort=8888
,, exactement la même exception se produit à nouveau, aussi longtemps que le violoneux application est en cours d'exécution, à la fois dans la saisie et non en mode de capture. Si je ferme les violoneux, le programme fonctionne parfaitement bien.
Si j'utilise: System.setProperty("http.proxyHost", "127.0.0.1");
au lieu de: System.setProperty("http.proxyHost", "localhost");
, il fonctionne très bien avec un violon application en cours d'exécution, les cap-/non mode de capture, mais aussi PAS capturé de la circulation.
Est ce que quelqu'un là-bas, en mesure de capturer leur propre trafic https avec un violon, et non PAS par le biais d'un navigateur web, mais par le biais d'un programme java? Quels sont les arguments jvm, comment peut-on mettre en place pour ce faire? merci