Sto cercando di fare una connessione SSL con Socket Java.
Ma ho il seguente problema
Scrivo il codice incriminato:
codice://Carico il Key Store objKeyStore.load(new FileInputStream(certificato_kst), arrpassword); //Carico Trust Store objKeyManagerFactory.init(objKeyStore, arrPassword_kst); // Trust Store MakeKeyStore objMakeTrustStore = new MakeKeyStore(); KeyStore objTrustStore = objMakeTrustStore.getKeyStore(); // Carico il Trust Store objTrustStore.load(new FileInputStream(certificato_kst), arrPassword_tru); // Trust Manager MakeTrustManagerFactory objMakeTrustManagerFactory = new MakeTrustManagerFactory(); TrustManagerFactory objTrustManagerFactory = objMakeTrustManagerFactory.getTrustManagerFactory(); objTrustManagerFactory.init(objTrustStore); objSSLContext.init(objKeyManagerFactory.getKeyManagers(), objTrustManagerFactory.getTrustManagers(), null); objSSLSocketFactory = objSSLContext.getSocketFactory(); echoSocket =(SSLSocket)objSSLSocketFactory.createSocket("10.16.10.9", 4000); echoSocket.setSoTimeout(timeout); alServer = new PrintWriter(echoSocket.getOutputStream(), true); dalServer = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); response=""; /* String messaggioDalServer = ""; while(messaggioDalServer != null && !messaggioDalServer.trim().equals("")) { messaggioDalServer = dalServer.readLine(); System.out.println(messaggio); if(messaggioDalServer != null && !messaggioDalServer.trim().equals("")) { messaggioDalServer = objBufferedReader.readLine(); } } */ System.out.println("--- PRIMA DI FARE alServer.print(messaggio) "); alServer.print(messaggio); System.out.println("--- DOPO alServer.print(messaggio) "); alServer.flush(); System.out.println("--- HO FATTO ANCHE alServer.flush() "); char[] b= new char [2000]; System.out.println(" --- PRIMA DI FARE dalServer.read(b) ---"); dalServer.read(b); System.out.println(" --- DOPO dalServer.read(b) ---"); for (int i=0;i<b.length;i++) { System.out.println(" --- Sto nel ciclo ---"); if (b[i]!=0)response+=b[i]; } System.out.println(" --- DOPO IL CICLO ---"); System.out.println(response); // close(); } catch(Exception e) { System.out.println("Errore Socket"); e.printStackTrace(); }
Ecco l'errore:
GRAZIE Anticipatamentecodice:at com.sun.net.ssl.internal.ssl.SSLSocketImpl.checkEOF(Unknown Source) at com.sun.net.ssl.internal.ssl.AppInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.read1(Unknown Source) at java.io.BufferedReader.read(Unknown Source) at java.io.Reader.read(Unknown Source) at ssl.client.SSLClientAction.pincoPalloSocketNonProtetto(SSLClientAction.java:536) it.pincoPallo.main(BatchCreazioneNuovePolizzeArag.java:809) Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection? at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(Unknown Source) at com.sun.net.ssl.internal.ssl.InputRecord.read(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(Unknown Source) at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source) at sun.nio.cs.StreamEncoder.writeBytes(Unknown Source) at sun.nio.cs.StreamEncoder.implFlushBuffer(Unknown Source) at sun.nio.cs.StreamEncoder.implFlush(Unknown Source) at sun.nio.cs.StreamEncoder.flush(Unknown Source) at java.io.OutputStreamWriter.flush(Unknown Source) at java.io.BufferedWriter.flush(Unknown Source) at java.io.PrintWriter.flush(Unknown Source) at ssl.client.SSLClientAction.miometodo(SSLClientAction.java:532) ... 3 more
PS. L'errore è scatenato da questa riga: dalServer.read(b);

Rispondi quotando