Sende data til en SSL-form
Jeg forsøger at oprette en javafil, som åbner en forbindelse til en form med ssl.Forsøgskoden er hentet her:
http://www.devx.com/Java/Article/17679/1954
http://www.java2s.com/Tutorial/Java/0490__Security/SSLClientwithjavaxnetssltrustStoresetting.htm
http://www.exampledepot.com/egs/javax.net.ssl/client.html
Jeg har hentet certifikatet fra pågældende form, konverteret den, og tilføjet den til mit Eclipse-system.
Løsningerne giver forskellige fejl. Den sidste implementering giver: "password tampered with".
Den føste og oprindelige løsning giver: "the trustAnchors parameter must be non-empty".
Kender nogle en løsning på problemet?
Jeg har forsøgt de følgende 3 måder:
String filename = System.getProperty("java.home")
+ "/lib/security/cacerts".replace('/', File.separatorChar);
System.out.println("Filename= "+filename); System.setProperty("javax.net.ssl.trustStore",filename);
System.setProperty("javax.net.ssl.trustStorePassword","kode");
System.out.println("Url= "+loginUrl+"?name="+loginName+"&password="+loginPassword);
String newUrl= loginUrl+"?name="+loginName+"&password="+loginPassword;
System.setProperty("javax.net.ssl.trustStore", newUrl);
//Create streams to securely send and receive data to the server InputStream
InputStream is = new
URL(loginUrl+"?"+ServersLoginName+"="+loginName+"&"+ServersLoginPassword+"="+loginPassword).openStream();
URL(loginUrl+"?"+ServersLoginName+"="+loginName+"&"+ServersLoginPassword+"="+loginPassword).openConnection();
System.out.println("Attempt2:");
int port = 8080;
String hostname = loginUrl;
SocketFactory socketFactory = SSLSocketFactory.getDefault();
Socket socket = socketFactory.createSocket(hostname, port);
// Create streams to securely send and receive data to the server
InputStream in = socket.getInputStream();
OutputStream out2 = socket.getOutputStream();
// Read from in and write to out...
// Close the socket
in.close();
out2.close();
System.out.println("Attempt3:");
SSLSocketFactory ssf = (SSLSocketFactory) SSLSocketFactory.getDefault();
Socket s = ssf.createSocket(loginUrl, 8080);
BufferedReader in2 = new BufferedReader(new InputStreamReader(s.getInputStream()));
String x = in2.readLine();
System.out.println(x);
in2.close();
Jeg har også forsøgt at følge disse vejledninger:
http://www.innovation.ch/java/HTTPClient/emulating_forms.html
http://java.sun.com/docs/books/tutorial/networking/urls/readingWriting.html
http://www.informit.com/guides/content.aspx?g=java&seqNum=44
http://www.theserverside.com/news/1365153/HttpClient-and-FileUpload
Men Eclipse brokker sig hele tiden over f.eks. "unable to find valid certification path to requested target", "password tampered with" eller andet.